This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (roachjs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
This client is a port from the original Golang client.
Internally it's is more or less the same, but this driver provides a friendlier javascript interface.
// You should prepare your queries and send them in a single batch// For optimal performance// This actually returns you a new clientvar c = client.prepare()// This callback will be the first to be executed
c.get("sample_key",function(err, value, meta){if(err)throw err
// Do something...})
c.get("sample_key2",function(err, value, meta){if(err)throw err
// Do something...})
c.put("some_key","some_value",function(err){if(err)throw err
// Do something})// The flush callback is the last one to be called
c.flush(function(err, meta){if(err)throw err
console.log('Sucessfuly flushed %d queries.', meta.flushed)})
Advanced client usage II
var c = client.prepare()// This objects (references) will be sent in place of the callback// This pattern is a great pattern to keep your sanity :)var dogsResp = c.Response()var kittensResp = c.Response()
c.get("dogs", dogsResp)
c.get("kittens", kittensResp)
c.flush(function(err){if(err)throw err
if(dogsResp.err){thrownewError('failed to get dogs')}if(kittensResp.err){thrownewError('failed to get kittens')}
c.put("other_dogs", dogsResp.value,function(err){if(err)throw err
})
c.put("other_kittens", kittensResp.value,function(err){if(err)throw err
})
c.flush()})
Advanced client usage III
var opts ={name:"transaction example",}var errNoApples =newError('Insufficient apples!')vartransaction=function(txn, commit, abort){var applesInStock = txn.Response()
txn.get("applesInStock", applesInStock)
txn.flush(function(err){if(err || applesInStock.err){returnabort(err)}var dispatch =5var inStock =ParseInt(applesInStock.value)if(inStock < dispatch){returnabort(errNoApples)}
txn.increment("applesInStock",-dispatch)
txn.increment("applesInRoute",+dispatch)// Commit automatically flushescommit()})}
client.runTransaction(opts, transaction,function(err, meta){if(err === errNoApples){// Alert user there are no more apples...}elseif(err){// Transaction failed...}else{// Transaction commited...}})
ConditionalPut sets the value for a key if the existing value matches the ifValue.
Specifying an empty or null ifValue means the entry must not yet exist.
client.contains("john",function(err, exists, meta){if(exists ===true){// john exists in the datastore}})
client.increment(key, increment, callback)
Increment increments the value at the specified key by some increment value.
Once called for a key, Put & Get will return errors; only Increment will continue to be a valid command.
The value must be deleted before it can be reset using Put.
Parameters
name
type
description
key
string
increment
integer
callback
callback
function(err, newValue, meta) {}
Callback
name
type
description
err
Error()
newValue
integer
the new value for this counter, after the increment operation
var c = client.prepare()
c.get("key",function(err, value, meta){// Do something...})
c.get("key2",function(err, value, meta){// Do something...})
c.put("key3","value",function(err, meta){// Do something...})
c.flush()
client.flush(callback)
Flush the prepared queries buffer, and send it as a batch request.
RunTransaction executes a retryable transaction function in
the context of a distributed transaction. The transaction is
automatically aborted if retryable function returns any error aside from
recoverable internal errors, and is automatically committed otherwise.
retryable should have no side effects which could cause problems in the event
it must be run more than once. The opts contains transaction settings.
The meta argument contains information about the request response, and any other extra
information data about the returned value.
Properties
property
type
description
timestamp
integer
timestamp of the returned entry
wall_time
integer
timestamp of when the read or write operation was performed
flushed
integer
number of flushed queries
Transaction function
The transaction function is an retryable function, it may be
executed more than once. This function should never forget to
call commit or abort. Throwing an error inside this
function also aborts the transaction.
this client is the same as client.prepare(), you can flush yourself if you don't wan't to commit yet.
commit
callback
to try to commit transaction
abort
callback
to abort transaction
abort() accepts an optional Error. This error will be passed to the
.runTransaction callback.
Example
vartransaction=function(txn, commit, abort){for(var i =0; i <100; i++){var key = i.toString()// Provide an txn.Response()// just so it won't trow an error
txn.put(key,"hello", txn.Response())}// Commit automatically flushes// the prepared transaction.commit()}