FindOrCreate v2.0 for Mongoose
Extend the mongoose schemas with a findOrCreate() plugin. Essentially, if a document is not found, will be atomically created or (if specified) updated
Install it with:
npm i find-or-create
Examples:
yourSchemastaticsfindOrCreate = ;YourModel = mongoose; YourModel;
Example upserting the document and using the promise return:
Model;
Note:
As of Mongoose v5, to use this module you need to set the global option useFindAndModify
to false, otherwise a warning will be logged.
Example:
mongoose.connect(uri, { useFindAndModify: false });
Upgrading to Mongoose 5:
The latest v2.0 of this plugin is compatible with Mongoose 5.x. If you need retro-compatibility with Mongoose 4.x, please install the version 1.1 of this module.
API:
MongooseModel;
If you don't specify a callback, it will be returned a promise.
-
doc is the document that will be inserted if the document based on your query is not found, otherwise the record will be updated with the new document (if upsert is enabled).
-
options is an optional object that will be passed to the underlying mongoose 'findOrCreate' method.
You can find the possible options here: http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate
Set
{upsert: true}
to update the document when it already exists, otherwhise it will be only inserted when not found
Test with
npm test
License
MIT