我在选项中使用findOneAndUpdate
和upsert: true
。
我想根据文件是否会更新或插入来有条件地设置字段。
const find = { email: 'me@me.com' }
const newDoc = { name: 'me', email: 'me@me.com', key: '???' }
const options = { new: true, upsert: true }
Accounts.findOneAndUpdate(find, newDoc, options)
如果是更新,我需要单独留下key
字段,但是当它插入时我需要生成一个新密钥。
这可能吗??
答案 0 :(得分:1)
您可以在Mongoose模型中设置默认值。
例如:
const generateKey = () => {
// ...
return key
}
// in your Mongoose model
key : {
type : String,
default : generateKey
}
然后,不要在您发送给Mongo的文档中指定密钥:
const newDoc = { name: 'me', email: 'me@me.com' } // No key
因此它会在插入时生成一个键,或者保留其他键。