New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mongoose-find-or-create

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mongoose-find-or-create

A plugin for Mongoose which adds the findOrCreate method to models. The method will either append an existing object or save a new one, depending on wether it finds it or not.

  • 1.3.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
667
increased by2.77%
Maintainers
1
Weekly downloads
 
Created
Source

mongoose-findorcreate Travis

A plugin for Mongoose which adds the findOrCreate method to models. The method will either append an existing object or save a new one, depending on wether it finds it or not.

There is already a mongoose-findorcreate plugin, but it has not been maintained, and the author does not respond to issues or PRs.

This is why this package is called mongoose-find-or-create

Usage

When you create a schema, simply add this plugin like so:

const findOrCreate = require('mongoose-find-or-create')

const MySchema = new mongoose.Schema({
  name: { type: String },
  slug: { type: String }
})
MySchema.plugin(findOrCreate)

const MyModel = mongoose.model('Fruit', FruitSchema)

MyModel.findOrCreate({ name: 'Mike' }, (err, result) => {
  // my new or existing model is loaded as result
})

// To search by one set of criteria and to save another set, simply use a second object:
MyModel.findOrCreate({ name: 'Mike' }, { slug: 'mike' }, (err, result) => {
  // my new or existing model is loaded as result
})

Options

You can pass an options object when adding the plugin to a schema or directly when using the method:

// Like so...
MySchema.plugin(findOrCreate, { appendToArray: true, saveOptions: { validateBeforeSave: false } })

// And/or like so:
MyModel.findOrCreate({ name: 'Mike' }, { slug: 'mike' }, { appendToArray: true }, (err, result) => {
  // my new or existing model is loaded as result
})

The possible options are:

  • appendToArray: if a field in the existing doc is an array, we can overwrite it (false) or merely append to it (true)
  • saveOptions: this object will be passed to the save() method as a set of options
  • saveIfFound: default is true - if set to false, it will do creates where all data is saved, and will merely return the doc if it exists and not save the second parameter's fields.

Testing

npm run test

Contributing

PRs and issues are greatly appreciated, so please go ahead!

Keywords

FAQs

Package last updated on 04 Jul 2017

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc