Security News
The Risks of Misguided Research in Supply Chain Security
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
feathers-nedb-browser
Advanced tools
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.
$ npm install --save @seald-io/nedb feathers-nedb
Important:
feathers-nedb
implements the Feathers Common database adapter API and querying syntax.
service(options)
Returns a new service instance initialized with the given options. Model
has to be an NeDB database instance.
const NeDB = require("@seald-io/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 a default
and max
page sizewhitelist
(optional) - A list of additional query parameters to allow (e.g. [ '$regex' ]
)multi
(optional) - Allow create
with arrays and update
and remove
with id
null to change multiple items. Can be true
for all methods or an array of multi methods (e.g. [ 'remove', 'create' ]
)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 },
}
);
On client you can't pass anything other than a query as the parameter. So you need to do it like this.
// client side
app.service("messages").update(
"someid",
{
text: "This message will be either created or updated",
},
{
query: { nedb: { upsert: true } },
}
);
then add a hook to the service to move the nedb options to the params object
(ctx) => {
const nedb = ctx.params.query.nedb;
if (nedb) {
ctx.params.nedb = nedb;
delete ctx.params.query.nedb;
}
return ctx;
};
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("@seald-io/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.
Copyright (c) 2019
Licensed under the MIT license.
FAQs
Feathers NeDB Service
We found that feathers-nedb-browser demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.