Class QuerySnapshot (7.6.0)

A QuerySnapshot contains zero or more [QueryDocumentSnapshot]QueryDocumentSnapshot objects representing the results of a query. The documents can be accessed as an array via the [documents] property or enumerated using the [forEach] method. The number of documents can be determined via the [empty] and [size] properties.

QuerySnapshot

Package

@google-cloud/firestore

Constructors

(constructor)(_query, _readTime, _size, docs, changes)

constructor(_query: Query<AppModelType, DbModelType>, _readTime: Timestamp, _size: number, docs: () => Array<QueryDocumentSnapshot<AppModelType, DbModelType>>, changes: () => Array<DocumentChange<AppModelType, DbModelType>>);

Constructs a new instance of the QuerySnapshot class

Parameters
NameDescription
_query Query<AppModelType, DbModelType>

The originating query.

_readTime Timestamp

The time when this query snapshot was obtained.

_size number

The number of documents in the result set.

docs () => Array<QueryDocumentSnapshot<AppModelType, DbModelType>>

A callback returning a sorted array of documents matching this query

changes () => Array<DocumentChange<AppModelType, DbModelType>>

A callback returning a sorted array of document change events for this snapshot.

Properties

docs

get docs(): Array<QueryDocumentSnapshot<AppModelType, DbModelType>>;

An array of all the documents in this QuerySnapshot.

{Array.

Example

let query = firestore.collection('col').where('foo', '==', 'bar');

query.get().then(querySnapshot => {
  let docs = querySnapshot.docs;
  for (let doc of docs) {
    console.log(`Document found at path: ${doc.ref.path}`);
  }
});

empty

get empty(): boolean;

True if there are no documents in the QuerySnapshot.

{boolean} QuerySnapshot#empty

Example

let query = firestore.collection('col').where('foo', '==', 'bar');

query.get().then(querySnapshot => {
  if (querySnapshot.empty) {
    console.log('No documents found.');
  }
});

query

get query(): Query<AppModelType, DbModelType>;

The query on which you called get() or onSnapshot() in order to get this QuerySnapshot.

{Query} QuerySnapshot#query

Example

let query = firestore.collection('col').where('foo', '==', 'bar');

query.limit(10).get().then(querySnapshot => {
  console.log(`Returned first batch of results`);
  let query = querySnapshot.query;
  return query.offset(10).get();
}).then(() => {
  console.log(`Returned second batch of results`);
});

readTime

get readTime(): Timestamp;

The time this query snapshot was obtained.

{Timestamp} QuerySnapshot#readTime

Example

let query = firestore.collection('col').where('foo', '==', 'bar');

query.get().then((querySnapshot) => {
  let readTime = querySnapshot.readTime;
  console.log(`Query results returned at '${readTime.toDate()}'`);
});

size

get size(): number;

The number of documents in the QuerySnapshot.

{number} QuerySnapshot#size

Example

let query = firestore.collection('col').where('foo', '==', 'bar');

query.get().then(querySnapshot => {
  console.log(`Found ${querySnapshot.size} documents.`);
});

Methods

docChanges()

docChanges(): Array<DocumentChange<AppModelType, DbModelType>>;

Returns an array of the documents changes since the last snapshot. If this is the first snapshot, all documents will be in the list as added changes.

{Array.

Returns
TypeDescription
Array<DocumentChange<AppModelType, DbModelType>>
Example

let query = firestore.collection('col').where('foo', '==', 'bar');

query.onSnapshot(querySnapshot => {
  let changes = querySnapshot.docChanges();
  for (let change of changes) {
    console.log(`A document was ${change.type}.`);
  }
});

forEach(callback, thisArg)

forEach(callback: (result: firestore.QueryDocumentSnapshot<AppModelType, DbModelType>) => void, thisArg?: unknown): void;

Enumerates all of the documents in the QuerySnapshot. This is a convenience method for running the same callback on each QueryDocumentSnapshot that is returned.

Parameters
NameDescription
callback (result: FirebaseFirestore.QueryDocumentSnapshot<AppModelType, DbModelType>) => void

A callback to be called with a [QueryDocumentSnapshot]QueryDocumentSnapshot for each document in the snapshot.

thisArg unknown

The this binding for the callback..

Returns
TypeDescription
void
Example

let query = firestore.collection('col').where('foo', '==', 'bar');

query.get().then(querySnapshot => {
  querySnapshot.forEach(documentSnapshot => {
    console.log(`Document found at path: ${documentSnapshot.ref.path}`);
  });
});

isEqual(other)

isEqual(other: firestore.QuerySnapshot<AppModelType, DbModelType>): boolean;

Returns true if the document data in this QuerySnapshot is equal to the provided value.

Parameter
NameDescription
other FirebaseFirestore.QuerySnapshot<AppModelType, DbModelType>

The value to compare against. {boolean} true if this QuerySnapshot is equal to the provided value.

Returns
TypeDescription
boolean