I just released version 0.4.0 of Data.js, a data manipulation and graph
persistence framework for Node.js and the browser.
It can also be considered a declarative interface to CouchDB, where users can
use the same API from Node.js or from the browser.
Data.js is built around a graph data model, where one node in the graph
corresponds to one document in Couch.
It offers support for object relationships and solves the "Data Join Problem"
using multiple gets for resolving associated objects.
It introduces a query language that can be used to solve most common tasks,
leaving complex queries and calculations to map/reduce.
Example query:
{
"type": "/type/"location",
"state": "CA",
"visitors": {} // placeholder, telling the query execution engine to return
associated visitor objects
}
The result is a subgraph, containing the query matches, along with associated
objects (visitors):
{
"/location/san_francisco": {"state": "CA", "visitors": ["/person/frank",
"/person/mary"], "type": "/type/location"},
"/person/frank": {..., "type": "/type/person"},
"/person/mary": {..., "type": "/type/person"},
...
}
Here's more: http://substance.io/#michael/data-js
And the source: http://github.com/michael/data
Would love to get some feedback. :)
-- Michael