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
IChangesObservable<DocumentChange> ForDocument(string docId);
| Parameters | ||
|---|---|---|
| docId | string | ID of a document for which notifications will be processed. |
| Return Value | |
|---|---|
| IChangesObservable<DocumentChange> | Observable that allows to add subscriptions to notifications for given document. |
Example
IDisposable subscription = store
.Changes()
.ForDocument("employees/1")
.Subscribe(
change =>
{
switch (change.Type)
{
case DocumentChangeTypes.Put:
// do something
break;
case DocumentChangeTypes.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
IChangesObservable<DocumentChange> ForDocumentsInCollection(string collectionName);
IChangesObservable<DocumentChange> ForDocumentsInCollection<TEntity>();
| 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. |
Overload with TEntity type uses Conventions.GetCollectionName to get collection name.
Example
IDisposable subscription = store
.Changes()
.ForDocumentsInCollection<Employee>()
.Subscribe(change => Console.WriteLine("{0} on document {1}", change.Type, change.Id));
or
string collectionName = store.Conventions.FindCollectionName(typeof(Employee));
IDisposable subscription = store
.Changes()
.ForDocumentsInCollection(collectionName)
.Subscribe(change => Console.WriteLine("{0} on document {1}", change.Type, change.Id));
ForDocumentsStartingWith
To observe all document changes for documents with ID that contains given prefix use ForDocumentsStartingWith method.
Syntax
IChangesObservable<DocumentChange> ForDocumentsStartingWith(string 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
IDisposable subscription = store
.Changes()
.ForDocumentsStartingWith("employees/1") // employees/1, employees/10, employees/11, etc.
.Subscribe(change => Console.WriteLine("{0} on document {1}", change.Type, change.Id));
ForAllDocuments
To observe all document changes use ForAllDocuments method.
Syntax
IChangesObservable<DocumentChange> ForAllDocuments();
| Return Value | |
|---|---|
| IChangesObservable<DocumentChange> | Observable that allows to add subscriptions to notifications for all documents. |
Example
IDisposable subscription = store
.Changes()
.ForAllDocuments() // employees/1, orders/1, customers/1, etc.
.Subscribe(change => Console.WriteLine("{0} on document {1}", change.Type, 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 | Value |
|---|---|
| None | 0 |
| Put | 1 |
| Delete | 2 |
| BulkInsertStarted | 4 |
| BulkInsertEnded | 8 |
| BulkInsertError | 16 |
| DeleteOnTombstoneReplication | 32 |
| Conflict | 64 |
| Common | Put & Delete |
Remarks
To get more method overloads, especially ones supporting delegates, please add the System.Reactive.Core package to your project.