Live Queries
Couchbase mobile database live query concepts
Activating a Live Query
A live query is a query that, once activated, remains active and monitors the database for changes; refreshing the result set whenever a change occurs. As such, it is a great way to build reactive user interfaces — especially table/list views — that keep themselves up to date.
So, a simple use case may be: A replicator running and pulling new data from a server, whilst a live-query-driven UI automatically updates to show the data without the user having to manually refresh. This helps your app feel quick and responsive.
var query = QueryBuilder
.Select(SelectResult.All())
.From(DataSource.Database(db));
// Adds a query change listener.
// Changes will be posted on the main queue.
var token = query.AddChangeListener((sender, args) => (1)
{
var allResult = args.Results.AllResults();
foreach (var result in allResult) {
Console.WriteLine(result.Keys);
/* Update UI */
}
});
// Start live query.
query.Execute(); (1)
1 | Build the query statements using the QuerybUilder |
2 | Activate the live query by attaching a listener. Save the token in order to detach the listener and stop the query later — se Example 2 |
3 | Start the query This will immediately execute the live query and post the result to the change listener. When a change is detected the query automatically runs, and posts the new query result to any observers (change listeners). |
query.RemoveChangeListener(token);
query.Dispose();
1 | Here we use the change lister token from Example 1 to remove the listeners. Doing so stops the live query. |