Changes API: How to Subscribe to Document Changes
Following methods allow you to subscribe to document changes:
forDocument
Single document changes can be observed using forDocument()
method.
Syntax
store.changes().forDocument(docId);
Parameters | ||
---|---|---|
docId | string | ID of a document for which notifications will be processed. |
Return Value | |
---|---|
IChangesObservable<DocumentChange> | Observable that allows to add listeners for events for given document. |
Example
store.changes().forDocument("employees/1")
.on("error", err => {
//handle error
})
.on("data", change => {
switch (change.type) {
case "Put":
// do something
break;
case "Delete":
// do something
break;
}
});
forDocumentsInCollection
To observe all document changes in particular collection use forDocumentInCollection()
method. This method filters documents by @collection
metadata property value.
Syntax
store.changes().forDocumentsInCollection(collectionName);
store.changes().forDocumentsInCollection(clazz);
Parameters | ||
---|---|---|
collectionName | string | Name of document collection for which notifications will be processed. |
Return Value | |
---|---|
IChangesObservable<DocumentChange> | Observable that allows to add subscriptions to notifications for given document collection name. |
Information
Overload with entity type uses conventions.getCollectionNameForType()
to get collection name.
Example
store.changes().forDocumentsInCollection(Employee)
.on("data", change => {
console.log(change.type + " on document " + change.id);
});
or
const collectionName = store.conventions.getCollectionNameForType(Employee);
store.changes()
.forDocumentsInCollection(collectionName)
.on("data", change => {
console.log(change.type + " on document " + change.id);
});
forDocumentsStartingWith
To observe all document changes for documents with ID that contains given prefix use forDocumentsStartingWith()
method.
Syntax
store.changes().forDocumentsStartingWith(docIdPrefix);
Parameters | ||
---|---|---|
docIdPrefix | string | Document ID prefix for which notifications will be processed. |
Return Value | |
---|---|
IChangesObservable<DocumentChange> | Observable that allows to add subscriptions to notifications for given document ID prefix. |
Example
store.changes()
.forDocumentsStartingWith("employees/1") // employees/1, employees/10, employees/11, etc.
.on("data", change => {
console.log(change.type + " on document " + change.id);
});
forAllDocuments
To observe all document changes use forAllDocuments()
method.
Syntax
store.changes().forAllDocuments();
Return Value | |
---|---|
IChangesObservable<DocumentChange> | Observable that allows to add subscriptions to notifications for all documents. |
Example
store.changes().forAllDocuments()
.on("data", change => {
console.log(change.type + " on document " + change.id);
});
DocumentChange
Name | Type | Description |
---|---|---|
type | DocumentChangeTypes | Document change type enum |
id | string | Document identifier |
collectionName | string | Document's collection name |
typeName | string | Type name |
changeVector | string | Document's ChangeVector |
DocumentChangeTypes
Name |
---|
None |
Put |
Delete |
BulkInsertStarted |
BulkInsertEnded |
BulkInsertError |
DeleteOnTombstoneReplication |
Conflict |
Common |