Miss any of our Open RFC calls?Watch the recordings here! »

This package has been deprecated

Author message:

Unmaintained

find-or-create

2.0.0 • Public • Published

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:

yourSchema.statics.findOrCreate = require("find-or-create");
YourModel = mongoose.model("yourSchema", yourSchema);
 
YourModel.findOrCreate({_id: myID}, {apples: 2}, (err, result) => {
    if (err) return console.error(err);
    console.log(result.doc); // the document itself
    console.log(result.isNew); // if the document has just been created
});

Example upserting the document and using the promise return:

Model.findOrCreate({_id: myID, apples: 2}, {apples: 5}, {upsert: true})
.then((result) => {
    console.log(result.doc);
    console.log(result.isNew);
})
.catch(console.error);

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.findOrCreate(query, doc, [options, callback]);

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

Install

npm i find-or-create

DownloadsWeekly Downloads

23

Version

2.0.0

License

MIT

Unpacked Size

11.5 kB

Total Files

5

Last publish

Collaborators

  • avatar