node package manager

nrj

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