Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
mongoose-dbref
Advanced tools
Mongoose-DBRef is an extension for Mongoose that exposes the DBRef type from the the node-mongodb-native
driver as a top level type in the Mongoose ORM and provides some utilities and plugins that allow DBRef instances
to be dereferenced from the models.
The extension provides the following types:
DBRef
: this is the schema type that can be used for database referencesThe extension provides the following plugins:
resolveDBRefs
: used to create getter/setter methods that resolve DBRefsThe extension provides the following utilities:
fetch
: fetches the object referenced by a DBRef valuenpm install mongoose-dbref
To install all of the types, plugins and utilities provided by the extension into a mongoose instance:
var mongoose = require("mongoose");
// Create a connection to your database
var db = mongoose.createConnection("mongodb://localhost/sampledb");
// Access the mongoose-dbref module and install everything
var dbref = require("mongoose-dbref");
var utils = dbref.install(mongoose);
To just install the types provided by the extension (either all types or a list of named types):
var mongoose = require("mongoose");
// Create a connection to your database
var db = mongoose.createConnection("mongodb://localhost/sampledb");
// Access the mongoose-dbref module and install everything
var dbref = require("mongoose-dbref");
var utils = dbref.loadTypes(mongoose);
To just install the plugins provided by the extension (either all plugins or list of named plugins):
var mongoose = require("mongoose");
// Create a connection to your database
var db = mongoose.createConnection("mongodb://localhost/sampledb");
// Access the mongoose-dbref module and install everything
var dbref = require("mongoose-dbref");
var utils = dbref.loadTypes(mongoose);
Once you have loaded the types, or installed the whole extension, you can begin to use them.
DBRef
The DBRef
type is a top-level schema type that can be used to identfied a field as holding
a MongoDb database reference. You use the type as you would any other standard type.
var DBRef = mongoose.SchemaTypes.DBRef;
var LineItemSchema = new Schema({
order: DBRef,
description: String,
cost: Number
});
var OrderSchema = new Schema({
poNumber: String,
lineItems: [DBRef]
});
This will create two schema - OrderSchema
that has a field (lineItems
) which can hold
multiple references, and LineItemSchema
that has a field order
with a single reference.
All of the standard options (required
, index
etc) can be applied to these fields.
Once you have installed the plugins, or installed the whole extension, you can begin to use them.
resolveDBRefs
The resolveDBRefs
plugin can be used to be used to automatically install getter and setter
methods for fields where a resolve
option has been set.
These methods will map DBRef values to/from objects via the database connection of the owning model.
For example:
var LineItemSchema = new Schema({
order: {type: DBRef, resolve: true},
description: String,
cost: Number
});
This will create two methods:
getOrder(callback)
- this will asynchronously resolve the DBRef
value in the order
field
setOrder(value)
- this will cast the value
(a model) to a DBRef
value that is set in the order
field
In addition if the cache
option is set, then the object resolved from teh DBRef
value will be
cached in a cache property ($order
for the order
field) and the getter method signature
will be changed to getOrder(callback, force)
. The additional, optional, parameter force
can be used to bypass any cached value.
This plugin can be installed on the mongoose instance or on individual schema, but the "owning" mongoose instance for the schema must always be specified during the installation.
Once you have installed the utilities, or installed the whole extension, you can begin to use them.
fetch
This fetch
utility function can be used to resolve a given DBRef
value when supplied with a mongoose
database connection and a callback function.
var mongoose = require("mongoose");
var db = mongoose.createConnection("mongodb://localhost/sampledb");
var utils = require("mongoose-dbref").utils;
var LineItem = db.model('LineItem');
LineItem.findById("4dee1f473abd4fbc61000001",
function(err, doc) {
utils.fetch(db, doc.order,
function(err, doc) {
if (err) throw err;
console.log("Order = " + doc);
});
});
In this example, the order
of a specific LineItem
is fetched using the database connection that
was used to find the LineItem
instance.
MIT License
Stuart Hudson
FAQs
Plugin support for DBRef in Mongoose
The npm package mongoose-dbref receives a total of 0 weekly downloads. As such, mongoose-dbref popularity was classified as not popular.
We found that mongoose-dbref 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
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.