o-gun-schema
v0.1.2
Published
Validate GUN DB data with JSON-Schema
Downloads
3
Maintainers
Readme
gun-schema
Validate Gun data with JSON-Schema.
Validation is done by is-my-json-valid
Getting started
Browser
Download the js bundle from the releases page and add it to the page. As well as attaching the required methods to Gun, it will create a GunSchema global.
Server
Install from NPM
npm install --save o-gun-schema
Require the module to have it attach itself to GUN
var Gun = require("gun");
require("o-gun-schema");
Example
// Get a reference to your schema from wherever
// This one was taken from the is-my-json-valid page
var schema = {
required: true,
type: 'object',
properties: {
hello: {
required: true,
type: 'string'
}
}
};
var gun = Gun();
gun.schema.add("example", schema);
// This is valid so it'll get put into the graph
gun.schema.put("example", {
hello: "World!"
});
// This will throw an error because `hello` was set as `required`
gun.schema.put("example", {
goodbye: "World!"
});
API
After the plugin has been properly initialized, it adds the following methods on gun instances
gun.schema.add(name, schema, options)
Adds a new type that will be recognized by gun.save()
name
: The unique name for this type of nodeschema
: The JSON Schema definition to use for validating this typeoptions
: Optional argument which gets passed down to is-my-json-valid
gun.schema.put(name, value)
Similar to gun.put()
, but uses the schema associated with name
to ensure that value
is valid. This is different syntax from the original gun-schema.
name
: The name of the schema thatvalue
should matchvalue
: The value that should be validated before beingput()
into the DB.
If name
does not point to a schema name that has been registered, then an error will be thrown. If value
doesn't validate against the schema, then an error will be thrown with a errors
property which contains the list of things that are wrong with value
.
gun.schema.set(name, value)
Similar to gun.set()
, but uses the schema associated with name
to ensure that value
is valid. The above applies.
gun.schema.addMany(map, options)
Adds a bunch of schemas in one go.
map
: A map ofname
-schema
pairs that get passed on togun.schema()
options
: Optional argument which gets passed down togun.schema()
to configure is-my-json-valid
gun.schema.getSchemas()
gets all your active schemas
GunSchema(gun)
This is what gets exported by the module in CommonJS and what is added as the GunSchema
global in the bundle. It takes a gun instance and adds schema functionality to it.
gun
The gun instance to attach to. Not, this isn't theGun
constructor, but an actual instance orGun.chain
.