Mongoose findOneAndUpdate条件字段值基于更新或插入..?

时间:2017-09-06 09:00:54

标签: javascript mongodb mongoose

我在选项中使用findOneAndUpdateupsert: 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字段,但是当它插入时我需要生成一个新密钥。

这可能吗??

1 个答案:

答案 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

因此它会在插入时生成一个键,或者保留其他键。