A datastore module by Matt Balmer.
Can be used fine with either plain JavaScript, or with TypeScript for additional benefits.
The documentation below will be marked with TypeScript.
npm i --save mbalmer-datastore
Import with:
import { Datastore } from 'mbalmer-datastore';
or
const { Datastore } = require('mbalmer-datastore');
To create a new datastore:
const datastore = new Datastore();
The default data will be an empty object {}
. If you have data to default to, or an interface, the following will work:
const datastore = new Datastore<YourInterface>({
your: 'defaultObject',
foo: {
bar: 'hello',
},
});
Returns a boolean if the given path exists.
Returns the value at a given path, or default if it does not exist.
Sets the value at a given path.
Updates the value at a given path, as long as it exists. Throws an error if it does not.
If the force
flag is true, it will call set()
with the given parameters.
Inserts a value into an array field. If the path specified is not an array, an error will be thrown.
A callback for an insert
operation will also contain the delta (the value given in the insert() call), and the position inserted at.
There are several ways to call subscribe:
datastore.subscribe(callback)
datastore.subscribe(path, callback)
datastore.subscribe(path, operation, callback)
Where path
and operation
are optional arguments that server to filter which operations call the given callback.
For example, if called with datastore.subscribe('users', 'insert', callback)
, operations setting other paths, or setting the same path but with a different operation, would not trigger the callback.