README
feathers-lowdb
feathers-lowdb is a database service adapter for Lowdb, a small JSON database for Node, Electron and the browser powered by Lodash. LowDB can store data in-memory or on the filesystem which makes it useful as a persistent storage without a separate database server.
$ npm i --save lowdb feathers-lowdb
Important:
feathers-lowdbimplements 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 LowDB database instance.
const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync');
const service = require('feathers-lowdb');
const adapter = new FileSync('./data/messages.json');
// Create a LowDB instance
const Model = low(adapter);
app.use('/messages', service({ Model }));
app.use('/messages', service({ Model, id, events, paginate }));
Options:
Model(required) - The LowDB database instance. See the LowDB API for more information.id(optional, default:'_id') - The name of the id field property.events(optional) - A list of custom service events sent by this servicepaginate(optional) - A pagination object containing adefaultandmaxpage sizemulti(optional) - Allowcreatewith arrays andupdateandremovewithidnull to change multiple items. Can betruefor all methods or an array of multi methods (e.g.[ 'remove', 'create' ])
Example
Here is an example of a Feathers server with a messages LowDB service that supports pagination and persists to db-data/messages:
$ npm i --save @feathersjs/feathers @feathersjs/errors @feathersjs/express @feathersjs/socketio feathers-lowdb lowdb
In app.js:
const feathers = require('@feathersjs/feathers');
const express = require('@feathersjs/express');
const socketio = require('@feathersjs/socketio');
const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync');
const service = require('feathers-lowdb');
const adapter = new FileSync('./data/messages.json');
// Create a LowDB instance
const db = low(adapter);
// 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) 2019
Licensed under the MIT license.