Node.js Client API
You can develop applications and tools using Riak TS with the Riak Node.js client. This document covers the Node.js API for Riak TS.
Overview
To use Riak TS with Node.js, we’ve added several new commands in
the Riak.Commands.TS
namespace.
Language | Source | Documentation | Download |
---|---|---|---|
Node.js | riak-nodejs-client | api docs, wiki | NPM, GitHub Releases |
TS Commands
Note: These commands are automatically retried if they fail due to network error.
Commands
Get
- Fetch a single row based on the primary key values provided.Store
- Store 1 or more rows to a Riak TS table.Delete
- Delete a single row based on the primary key values provided.Query
- Allows you to query a Riak TS table with the given query string.ListKeys
- Lists the primary keys of all the rows in a Riak TS table.
Command Details
Get
Retrieve time series value by key.
var Riak = require('basho-riak-client');
var key = [ 'family', 'series', 'KEY' ];
var cb = function (err, rslt) {
// NB: rslt will be an object with two properties:
// 'columns' - table columns
// 'rows' - row matching the Get request
};
var cmd = new Riak.Commands.TS.Store.Builder()
.withTable('TimeSeriesData')
.withKey(key)
.withCallback(cb)
.build();
client.execute(cmd);
Builder Method | Type | Description |
---|---|---|
withTable |
string | The time series table name |
withKey |
array | The time series value’s key |
Return Type: response object with columns
and rows
properties.
Store
Stores time series data in the Riak cluster.
var Riak = require('basho-riak-client');
var now = new Date();
var fiveMinsAgo = new Date(now);
fiveMinsAgo.setMinutes(now.getMinutes() - 5);
var tenMinsAgo = new Date(now);
tenMinsAgo.setMinutes(now.getMinutes() - 10);
var fifteenMinsAgo = new Date(now);
fifteenMinsAgo.setMinutes(now.getMinutes() - 15);
var twentyMinsAgo = new Date(now);
twentyMinsAgo.setMinutes(now.getMinutes() - 20);
var rows = [
[ 'family', 'series', twentyMinsAgo, 'hurricane', 82.3 ],
[ 'family', 'series', fifteenMinsAgo, 'rain', 79.0 ],
[ 'family', 'series', fiveMinsAgo, 'wind', null ],
[ 'family', 'series', now, 'snow', 20.1 ]
];
var cb = function (err, rslt) {
// NB: rslt will be true when successful
};
var cmd = new Riak.Commands.TS.Get.Builder()
.withTable('TimeSeriesData')
.withRows(rows)
.withCallback(cb)
.build();
client.execute(cmd);
Builder Method | Type | Description |
---|---|---|
withTable |
string | The time series table name |
withRows |
array | The time series data |
Return Type: boolean
Delete
Delete time series value by key.
var Riak = require('basho-riak-client');
var key = [ 'family', 'series', 'KEY' ];
var cb = function (err, rslt) {
// NB: rslt will be an object with two properties:
// 'columns' - table columns
// 'rows' - row matching the Get request
};
var cmd = new Riak.Commands.TS.Delete.Builder()
.withTable('TimeSeriesData')
.withKey(key)
.withCallback(cb)
.build();
client.execute(cmd);
Builder Method | Type | Description |
---|---|---|
withTable |
string | The time series table name |
withKey |
array | The time series value’s key |
Return Type: boolean
Query
Queries time series data in the Riak cluster.
var Riak = require('basho-riak-client');
var cb = function (err, rslt) {
// NB: rslt will be an object with two properties:
// 'columns' - table columns
// 'rows' - row matching the Query request
};
var query = "select * from TimeSeriesData \
where time > 0 and time < 10 and \
family = 'hash1' and series = 'user1'";
var cmd = new Riak.Commands.TS.Query.Builder()
.withQuery(query)
.withCallback(cb)
.build();
client.execute(cmd);
Builder Method | Type | Description |
---|---|---|
withTable |
string | The time series table name |
withQuery |
string | The time series query |
Return Type: response object with columns
and rows
properties.
ListKeys
Lists all keys in a time series table via a stream.
var Riak = require('basho-riak-client');
var allKeys = [];
var callback = function(err, resp) {
Array.prototype.push.apply(allKeys, resp.keys);
if (resp.done) {
// NB: at this point all keys have been received
}
};
var cmd = new Riak.Commands.TS.ListKeys.Builder()
.withTable('TimeSeriesData')
.withStreaming(true)
.withTimeout(1000)
.withCallback(callback)
.build();
cluster.execute(cmd);
Builder Method | Type | Description |
---|---|---|
withTable |
string | The time series table name |
withStreaming |
boolean | true if you would like callback per-key chunk |
withTimeout |
integer | Timeout in milliseconds for the list keys command |
Return Type: response object with keys
property.