Say I have this minimal database stored in Cloud Firestore. How could I retrieve the names of subCollection1
and subCollection2
?
ro
It seems like they have added a method called getCollections()
to Node.js:
firestore.doc(`/myCollection/myDocument`).getCollections().then(collections => {
for (let collection of collections) {
console.log(`Found collection with id: ${collection.id}`);
}
});
This example prints out all subcollections of the document at /myCollection/myDocument
Isn't this detailed in the documentation?
/** * Delete a collection, in batches of batchSize. Note that this does * not recursively delete subcollections of documents in the collection */ function deleteCollection(db, collectionRef, batchSize) { var query = collectionRef.orderBy('__name__').limit(batchSize); return new Promise(function(resolve, reject) { deleteQueryBatch(db, query, batchSize, resolve, reject); }); } function deleteQueryBatch(db, query, batchSize, resolve, reject) { query.get() .then((snapshot) => { // When there are no documents left, we are done if (snapshot.size == 0) { return 0; } // Delete documents in a batch var batch = db.batch(); snapshot.docs.forEach(function(doc) { batch.delete(doc.ref); }); return batch.commit().then(function() { return snapshot.size; }); }).then(function(numDeleted) { if (numDeleted <= batchSize) { resolve(); return; } // Recurse on the next process tick, to avoid // exploding the stack. process.nextTick(function() { deleteQueryBatch(db, query, batchSize, resolve, reject); }); }) .catch(reject); }
In Node.js you'll be after the 'ListCollectionIds' method
var firestore = require('firestore.v1beta1');
var client = firestore.v1beta1({
// optional auth parameters.
});
// Iterate over all elements.
var formattedParent = client.anyPathPath("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]");
client.listCollectionIds({parent: formattedParent}).then(function(responses) {
var resources = responses[0];
for (var i = 0; i < resources.length; ++i) {
// doThingsWith(resources[i])
}
})
.catch(function(err) {
console.error(err);
});
This is not currently supported in the client SDKs (Web, iOS, Android).