new CollectionGroup()
A CollectionGroup
refers to all documents that are contained in a
collection or subcollection with a specific collection ID.
Methods
(async, generator) getPartitions(desiredPartitionCount) → {AsyncIterable.<QueryPartition>}
Partitions a query by returning partition cursors that can be used to run the query in parallel. The returned cursors are split points that can be used as starting and end points for individual query invocations.
Parameters:
Name | Type | Description |
---|---|---|
desiredPartitionCount |
number |
The desired maximum number of partition points. The number must be strictly positive. The actual number of partitions returned may be fewer. |
Returns:
Type | Description |
---|---|
AsyncIterable.<QueryPartition> |
An AsyncIterable of
|
Example
const query = firestore.collectionGroup('collectionId');
for await (const partition of query.getPartitions(42)) {
const partitionedQuery = partition.toQuery();
const querySnapshot = await partitionedQuery.get();
console.log(`Partition contained ${querySnapshot.length} documents`);
}
withConverter(converter) → {CollectionGroup}
Applies a custom data converter to this CollectionGroup
, allowing you
to use your own custom model objects with Firestore. When you call get()
on the returned CollectionGroup
, the provided converter will convert
between Firestore data and your custom type U.
Using the converter allows you to specify generic type arguments when storing and retrieving objects from Firestore.
Parameters:
Name | Type | Description |
---|---|---|
converter |
FirestoreDataConverter |
Converts objects to and from Firestore. |
Returns:
Type | Description |
---|---|
CollectionGroup |
A |
Example
class Post {
constructor(readonly title: string, readonly author: string) {}
toString(): string {
return this.title + ', by ' + this.author;
}
}
const postConverter = {
toFirestore(post: Post): FirebaseFirestore.DocumentData {
return {title: post.title, author: post.author};
},
fromFirestore(
snapshot: FirebaseFirestore.QueryDocumentSnapshot
): Post {
const data = snapshot.data();
return new Post(data.title, data.author);
}
};
const querySnapshot = await Firestore()
.collectionGroup('posts')
.withConverter(postConverter)
.get();
for (const doc of querySnapshot.docs) {
const post = doc.data();
post.title; // string
post.toString(); // Should be defined
post.someNonExistentProperty; // TS error
}