model.insert
Validate and insert document(s) in a collection and calls model hooks: beforeValidate, beforeInsert, afterInsert
Arguments
options (object)
data(object|array) - Data that is validated against the model fields. Key names can be in dot or bracket notation which is handy for HTML FormData.- [
blacklist] (array|string|false): augmentdefinition.insertBL.falsewill remove all blacklisting - [
project] (string|array|object): project these fields, ignores blacklisting - [
skipValidation] (string|array|boolean): skip validation for these fields, or passtrueto skip all fields and validation hooks - [
timestamps] (boolean): whethercreatedAtandupdatedAtare automatically inserted, defaults tomanager.timestamps - [
any mongodb option] (any)
Returns
A promise
Example
await user.insert({ data: { name: 'Martin Luther' }})
await user.insert({ data: [{ name: 'Martin Luther' }, { name: 'Bruce Lee' }]})
Blacklisting
You can augment the model’s blacklist (definition.insertBL) by passing a custom blacklist:
// Prevents `name` and `pets.$.name` (array) from being returned.
user.insert({ data: {}, blacklist: ['name', 'pets.name'] })
// You can also whitelist any blacklisted fields found in definition.insertBL
user.insert({ data: {}, blacklist: ['-name', '-pet'] })
Defaults example
When defaultObjects is enabled, undefined embedded documents and arrays will default to {} [] respectively when inserting. You can enable defaultObjects via the manager options.
db.model({
fields: {
names: [{ type: 'string' }],
pets: {
name: { type: 'string' },
colors: [{ type: 'string' }]
}
}
})
await user.insert({ data: {} })
// data = {
// names: [],
// pets: { colors: [] }
// }