An isomorphic JavaScript library that acts as an in memory data store for JSON API data.
npm install json-api-storeAn isomorphic JavaScript library that acts as an in memory data store for
JSON API data. Changes are
broadcast using RxJS. Built to
work with React.
At the moment the primary use can for JSON API Store is in the browser:
``javascript
// Create a new store instance.
var adapter = new Store.AjaxAdapter({ base: "/api/v1" });
var store = new Store(adapter);
// Define the "categories" type.
store.define([ "categories", "category" ], {
title: Store.attr(),
products: Store.hasMany()
});
// Define the "products" type.
store.define([ "products", "product" ], {
title: Store.attr(),
category: Store.hasOne()
});
// Subscribe to events using RxJS.
store.observable.subscribe(function (event) {
console.log(event.name, event.type, event.id, event.resource);
});
// Load all the products.
store.load("products", { include: "category" }, function (products) {
products.length; // 1
products[0].id; // "1"
products[0].title; // "Example Book"
products[0].category.id; // "1"
products[0].category.title; // "Books"
products[0] === store.find("products", "1"); // true
products[0].category === store.find("categories", "1"); // true
});
`
You can also use JSON API Store in a Node.js environment (currently, there
aren't any adapters that work in a Node.js):
NOTE: Without an adapter the CLUD methods (create, load, update anddestroy) cannot be used.
`javascript
var Store = require("json-api-store");
var store = new Store();
store.define([ "categories", "category" ], {
title: Store.attr(),
products: Store.hasMany()
});
store.define([ "products", "product" ], {
title: Store.attr(),
category: Store.hasOne()
});
store.add({
type: "products",
id: "1",
attributes: {
title: "Example Product"
},
relationships: {
category: {
data: {
type: "categories",
id: "1"
}
}
}
});
store.add({
type: "categories",
id: "1",
attributes: {
title: "Example Category"
}
});
store.find("products", "1").category.title; // "Example Category"
`
Full documentation is available on the website:
http://particlesystem.com/json-api-store/
#### NPM
``
npm i json-api-store
#### Bower
```
bower i json-api-store
#### Download
To use directly in the browser you can grab the store.prod.js file.