nrj
v0.0.2
Published
A Node.js client for the Riak Json https://github.com/basho-labs/riak_json/ document store framework.
Downloads
3
Maintainers
Readme
nrj
A Node.js client for RiakJson document store framework
Installation
npm install -g nrj
Usage
Creating / Referencing a Collection
Create a client, and reference a new or existing collection. Note: On the server side, the collection is only created, in any real sense, when either the first document is inserted, or the collection indexing schema is saved.
var riak_json = require('nrj');
var client = riak_json.Client.getClient(); // default http host and port
var cities_collection = client.collection('cities');
Solr Schema Administration
You may set an optional Solr indexing schema for a RiakJson collection. If you do not set an explicit schema, and start inserting documents into a collection, RiakJson will attempt to infer a schema based on the document's structure (keep in mind, though, that the derived schema attempts to index every field in the document).
Supported Solr indexing field types:
string
(no spaces, think of a url slug)text
(spaces allowed)multi_string
(an array of strings, no spaces)integer
schema = cities_collection.new_schema(); // get a new CollectionSchema object
schema.addTextField(name='city', required=true);
schema.addStringField('state', true);
schema.addMultiStringField('zip_codes'); // required: false
schema.addIntegerField('population');
schema.addStringField('country', true);
cities_collection.set_schema(schema, function(){ /* callback fn */ });
You can now retrieve the stored schema (once RiakJson and Solr has had a chance to process it).
schema_fields = cities_collection.get_schema(function(result) { console.log(result) })
// [{
// name: "city",
// type: "text",
// require: true
// }, {
// name: "state",
// type: "string",
// require: true
// }, {
// name: "zip_codes",
// type: "multi_string",
// require: false
// }, {
// name: "population",
// type: "integer",
// require: false
// }, {
// name: "country",
// type: "string",
// require: true
// }]
Reading and Writing Documents
You can now perform CRUD operations on JSON documents and collections:
var doc = new riak_json.RJDocument('nyc', {city: 'New York', state: 'NY'}); // key = 'nyc'
collection.insert(doc);
collection.find_by_key('nyc'); // => {city: 'New York', state: 'NY'}
collection.remove(doc); // => deletes the document at key 'nyc'
Querying RiakJson - find_one() and find_all()
See RiakJson Query Docs for a complete list of valid query parameters.
Unit Testing
npm test