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

标签 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单独的字段,但当它是插入时,我需要生成一个新的 key 。

这可能吗..?

最佳答案

您可以在 Mongoose 模型中设置默认值。

例如:

const generateKey = () => { 
    // ...
    return key
}

// in your Mongoose model
key : {
    type : String,
    default : generateKey
}

然后,不要在发送给 Mongo 的文档中指定 key :

const newDoc = { name: 'me', email: 'me@me.com' } // No key

因此它将在插入时生成一个 key ,否则就保留它。

关于javascript - Mongoose findOneAndUpdate 基于更新或插入的条件字段值..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070927/

相关文章:

javascript - 循环卡在第一个区间

node.js - 在 Sails 应用程序中,Mongoose 是否优于水线?

node.js - mongoDB 中的条件 $sum 查询

mongodb - mongoose - 按数组长度排序

node.js - 使用 mongoose findOneandUpdate 时无法读取未定义的属性 '_id'

javascript - 尝试在 Mongoose 中填充,但它不起作用(nodejs)

javascript - React - 冒泡状态以更改子项的类名

javascript - 使用 Javascript 重新定位 <div>

mongodb - java中的mongodb查询

javascript - 在 React Component 中多次解构 Props?