我试图通过传递ObjectId
作为请求正文值来更新模型中的值。有时它正在更新,有时不更新。我发现这是因为在某些记录中ObjectId
为空。当集合中没有null时,可以进行更新。因此,我决定省略记录中具有null
值的记录,并查询其余记录。但是我面临一个问题。我无法从省略的空记录中查询我手动存储的集合。
代码
accept = async (req, res) => {
let ObjectId = require('mongoose').Types.ObjectId
try {
await this._model.find({
person1: {
$ne: null
}
}, (err, obj) => {
if (err) {
console.log(err);
} else {
console.log(obj);
obj.update({
person1: new ObjectId(req.body.cid),
person2: new ObjectId(req.body.uid)
}, {
$set: {
status: "active"
},
}, (err, doc) => {
if (err) {
this.getErrorMsg(res, 522, null);
} else {
this.getErrorMsg(res, 227, doc);
}
})
}
})
} catch (err) {
console.log(err);
}
}
收藏
[{
"_id":"5d2715cea9ae086ac295c6d8",
"status":"pending",
"person1":ObjectId("5cfe4dd898fd225ef1c99ded"),
"person2":ObjectId("5d02197e2859122fa28c189b")
}
{
"_id":"5d2715cea9ae086ac295c6d9",
"status":"pending",
"person1":ObjectId("5cfe4dd898fd225ef1c99dee"),
"person2":ObjectId("5d02197e2859122fa28c189c")
}
{
"_id":"5d2715cea9ae086ac295c6d0",
"status":"pending",
"person1":null,
"person2":ObjectId("5d02197e2859122fa28c189f")
}]
错误
TypeError:obj.update不是函数
答案 0 :(得分:0)
您只需要在更新查询的过滤器中添加person1: {$ne: null}
。
示例:
await this._model.update({
person1: {$ne: null, $eq: new ObjectId(req.body.cid)},
person2: new ObjectId(req.body.uid)
}, {
$set: {
status: "active"
}
})