Class DocumentChange (7.9.0)

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

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

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

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

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<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 DocumentChange is equal to the provided value.

Returns
Type Description
boolean