gpt4 book ai didi

node.js - Mongoose findOneAndUpdate() 无条件更新最后创建的文档

转载 作者:太空宇宙 更新时间:2023-11-03 23:06:43 25 4
gpt4 key购买 nike

我正在开发一个完整的 AJAX 客户端表单,如果帖子不包含客户端 ID,它将创建一个新的 MongoDB 条目,如果有 ID,它将更新该条目。

我正在尝试像这样使用 mongoose 的 findOneAndUpdate() :

exports.post = function ( req, res ) {
var payload = req.body,
condition = payload._id ? { _id: payload._id } : null,
query = {}

query[ payload.fieldName ] = payload.value

Client.findAndUpdate(
condition,
query,
{ upsert: true },
function ( err, client ) {
var response = {
success: true,
message: null,
client: client
}

if ( err ) {
console.error( err )
results.success = false
results.message = err
}

res.json( response )
})
}

我的问题是,如果条件为 null 或 {},它将找到最后创建的条目并更新该条目,而不是创建新条目,

我如何达到我想要的行为? if else 并根据 ID 可用性使用 2 种不同的 mongoose 方法?

最佳答案

如果您查询 null 或空文档,它将返回所有文档的列表,例如db.collection.find() 相当于 db.collection.find(null) 和 db.collection.find({})

只需更新条件=有效负载._id? { _id: Payload._id } : null, 行到

condition = payload._id ? { _id: payload._id } : {_id:{"$exists":false}}, 

希望对你有帮助

关于node.js - Mongoose findOneAndUpdate() 无条件更新最后创建的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32829389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com