feathers-nedb-ajv
v3.1.9
Published
Feathers NeDB Service with JSON Schema Validation
Downloads
4
Maintainers
Readme
feathers-nedb
feathers-nedb is a database service adapter for NeDB, an embedded datastore with a MongoDB like API. NeDB can store data in-memory or on the filesystem which makes it useful as a persistent storage without a separate database server.
Note: The library has been modified to add AJV validation support. Simply pass in a JSON Schema in Model.schema, and this validation will automatically be enabled.
$ npm install --save nedb feathers-nedb
Important:
feathers-nedb
implements the Feathers Common database adapter API and querying syntax.
API
service(options)
Returns a new service instance initialized with the given options. Model
has to be an NeDB database instance.
const NeDB = require('nedb');
const service = require('feathers-nedb');
// Create a NeDB instance
const Model = new NeDB({
filename: './data/messages.db',
autoload: true
});
app.use('/messages', service({ Model }));
app.use('/messages', service({ Model, id, events, paginate }));
Options:
Model
(required) - The NeDB database instance. See the NeDB API for more information.id
(optional, default:'_id'
) - The name of the id field property. By design, NeDB will always add an_id
property.events
(optional) - A list of custom service events sent by this servicepaginate
(optional) - A pagination object containing adefault
andmax
page size
params.nedb
When making a service method call, params
can contain an nedb
property which allows to pass additional NeDB options, for example to allow upsert
:
app.service('messages').update('someid', {
text: 'This message will be either created or updated'
}, {
nedb: { upsert: true }
});
Example
Here is an example of a Feathers server with a messages
NeDB service that supports pagination and persists to db-data/messages
:
$ npm install @feathersjs/feathers @feathersjs/errors @feathersjs/express @feathersjs/socketio feathers-nedb nedb
In app.js
:
const feathers = require('@feathersjs/feathers');
const express = require('@feathersjs/express');
const socketio = require('@feathersjs/socketio');
const NeDB = require('nedb');
const service = require('feathers-nedb');
const db = new NeDB({
filename: './db-data/messages',
autoload: true
});
// Create an Express compatible Feathers application instance.
const app = express(feathers());
// Turn on JSON parser for REST services
app.use(express.json());
// Turn on URL-encoded parser for REST services
app.use(express.urlencoded({extended: true}));
// Enable REST services
app.configure(express.rest());
// Enable Socket.io services
app.configure(socketio());
// Connect to the db, create and register a Feathers service.
app.use('/messages', service({
Model: db,
paginate: {
default: 2,
max: 4
}
}));
// Set up default error handler
app.use(express.errorHandler());
// Create a dummy Message
app.service('messages').create({
text: 'Message created on server'
}).then(message => console.log('Created message', message));
// Start the server.
const port = 3030;
app.listen(port, () => {
console.log(`Feathers server listening on port ${port}`);
});
Run the example with node app
and go to localhost:3030/messages.
License
Copyright (c) 2016
Licensed under the MIT license.