A DocumentChange represents a change to the documents matching a query. It contains the document affected and the type of change that occurred.
DocumentChange
Package
@google-cloud/firestoreConstructors
(constructor)(type, document, oldIndex, newIndex)
constructor(type: DocumentChangeType, document: QueryDocumentSnapshot<AppModelType, DbModelType>, oldIndex: number, newIndex: number);
Constructs a new instance of the DocumentChange
class
Parameters | |
---|---|
Name | Description |
type |
DocumentChangeType
'added' | 'removed' | 'modified'. |
document |
QueryDocumentSnapshot<AppModelType, DbModelType>
The document. |
oldIndex |
number
The index in the documents array prior to this change. |
newIndex |
number
The index in the documents array after this change. |
Properties
doc
get doc(): QueryDocumentSnapshot<AppModelType, DbModelType>;
The document affected by this change.
{QueryDocumentSnapshot} DocumentChange#doc
let query = firestore.collection('col').where('foo', '==', 'bar');
let unsubscribe = query.onSnapshot(querySnapshot => {
for (let change of querySnapshot.docChanges) {
console.log(change.doc.data());
}
});
// Remove this listener.
unsubscribe();
newIndex
get newIndex(): number;
The index of the changed document in the result set immediately after this DocumentChange (i.e. supposing that all prior DocumentChange objects and the current DocumentChange object have been applied). Is -1 for 'removed' events.
{number} DocumentChange#newIndex
let query = firestore.collection('col').where('foo', '==', 'bar');
let docsArray = [];
let unsubscribe = query.onSnapshot(querySnapshot => {
for (let change of querySnapshot.docChanges) {
if (change.oldIndex !== -1) {
docsArray.splice(change.oldIndex, 1);
}
if (change.newIndex !== -1) {
docsArray.splice(change.newIndex, 0, change.doc);
}
}
});
// Remove this listener.
unsubscribe();
oldIndex
get oldIndex(): number;
The index of the changed document in the result set immediately prior to this DocumentChange (i.e. supposing that all prior DocumentChange objects have been applied). Is -1 for 'added' events.
{number} DocumentChange#oldIndex
let query = firestore.collection('col').where('foo', '==', 'bar');
let docsArray = [];
let unsubscribe = query.onSnapshot(querySnapshot => {
for (let change of querySnapshot.docChanges) {
if (change.oldIndex !== -1) {
docsArray.splice(change.oldIndex, 1);
}
if (change.newIndex !== -1) {
docsArray.splice(change.newIndex, 0, change.doc);
}
}
});
// Remove this listener.
unsubscribe();
type
get type(): DocumentChangeType;
The type of change ('added', 'modified', or 'removed').
{string} DocumentChange#type
let query = firestore.collection('col').where('foo', '==', 'bar');
let docsArray = [];
let unsubscribe = query.onSnapshot(querySnapshot => {
for (let change of querySnapshot.docChanges) {
console.log(`Type of change is ${change.type}`);
}
});
// Remove this listener.
unsubscribe();
Methods
isEqual(other)
isEqual(other: firestore.DocumentChange<AppModelType, DbModelType>): boolean;
Returns true if the data in this DocumentChange
is equal to the provided value.
Parameter | |
---|---|
Name | Description |
other |
FirebaseFirestore.DocumentChange<AppModelType, DbModelType>
The value to compare against. true if this |
Returns | |
---|---|
Type | Description |
boolean |