Merge branch 'master' of github.com:coolaj86/json-storage-js

This commit is contained in:
AJ ONeal 2011-09-05 15:44:22 -06:00
commit 4a7c08d6f0
1 changed files with 38 additions and 6 deletions

View File

@ -3,11 +3,25 @@ jsonStorage
A light abstraction for DOMStorage (such as localStorage).
Installation
===
Ender.JS (Browser)
ender build json-storage
Node.JS (Server)
npm install localStorage json-storage
Usage
===
Made fo for Node.JS and Ender.JS (browser-side).
var localStorage = require('localStorage')
, JsonStorage = require('json-storage')
, db = JsonStorage(localStorage)
, db = JsonStorage(localStorage, 'my-app-prefix')
, myValue = {
foo: "bar"
, baz: "quux"
@ -20,6 +34,7 @@ Made fo for Node.JS and Ender.JS (browser-side).
API
===
* JsonStorage(DOMStorage, 'application-prefix') // optional prefix
* get(key)
* set(key, value)
* remove(key)
@ -30,12 +45,29 @@ API
null vs undefined in JSON
===
Since it is not valid to set `undefined` in JSON, calling `db.set('x')` is the same as `db.remove('x')`.
These notes do not reflect a bugs or defects in this library,
they're simply to inform you of a few 'gotchas' inherent in JSON / DOMStorage conversion.
However, `null`, and `"null"` both parse as `null` the "object", but the string (which would be `"\"null\""`).
99.999% of the time these gotchas shouldn't effect you in any way.
If they do, you're probably doing something wrong in the first place.
Therefore, setting a key to `undefined` will remove it from the db, but setting it to `null` will save it.
Yet both values that exist as `null` and values that don't exist will return `null`.
It is not valid to set `undefined` in JSON. So setting a key to `undefined` will remove it from the db.
Also `{ "foo": null, "bar": "null" }` will parse as `foo` being `null` but `bar` being `"null"`, much unlike the value `"null"` being parsed on its own.
This means that `db.set('x')` is the same as `db.remove('x')`.
To save `undefined`, use `null` instead.
Note that both values that exist as `null` and values that don't exist at all will return `null`.
db.set('existing-key', null);
null === db.get('existing-key');
null === db.get('non-existant-key');
The special case of `null` as `"null"`, aka `"\"null\""`:
`null`, and `"null"` both parse as `null` the "object", instead of one being the string (which would be `"\"null\""`).
Objects containing `null`, however, parse as expected `{ "foo": null, "bar": "null" }` will parse as `foo` being `null` but `bar` being `"null"`, much unlike the value `"null"` being parsed on its own.