Class DocumentChange (4.15.1)

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/firestore

Constructors

(constructor)(type, document, oldIndex, newIndex)

constructor(type: DocumentChangeType, document: QueryDocumentSnapshot<T>, oldIndex: number, newIndex: number);

Constructs a new instance of the DocumentChange class

Parameters
NameDescription
type DocumentChangeType

'added' | 'removed' | 'modified'.

document QueryDocumentSnapshot<T>

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<T>;

The document affected by this change.

{QueryDocumentSnapshot} DocumentChange#doc

Property Value
TypeDescription
QueryDocumentSnapshot<T>
Example

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

Property Value
TypeDescription
number
Example

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

Property Value
TypeDescription
number
Example

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

Property Value
TypeDescription
DocumentChangeType
Example

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<T>): boolean;

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

Parameter
NameDescription
other FirebaseFirestore.DocumentChange<T>

The value to compare against. true if this DocumentChange is equal to the provided value.

Returns
TypeDescription
boolean