【发布时间】:2019-12-03 07:49:27
【问题描述】:
我写了一个简单的更新函数。它可以正常工作几分钟,然后又不能正常工作。我哪里错了?请帮我。我使用 PUT 作为我的方法。
代码
accept = (req, res) => {
this._model.update({
user: new mongoose.Types.ObjectId(req.params.uid)
}, {
$set: {
status: 'active'
}
}, (err, obj) => {
if (err || !obj) {
res.send(err);
} else {
res.send(obj);
}
});
}
型号
{
"_id":"5d3189a00789e24a23438a0d",
"status":"pending",
"user":ObjectId("5d3189a00789e24a23438a0d"),
"code":"CT-123-345-234-233-423344",
"created_Date":"2019-07-19T09:13:04.297Z",
"updated_Date":"2019-07-19T09:13:04.297Z",
"__v":0
}
请求
api.abc.com/api/accept/5d3189a00789e24a23438a0d
有时它正在返回值,有时是 null。
【问题讨论】:
-
你得到的null是“err”变量,它返回它,因为它与!obj匹配。你确定你发送正确的uid,控制台记录吗?提示:您不要在 mongoose.Types.ObjectId 上新建“新”
-
它将转到
else部分@noitse -
按照所有的编码逻辑,这是没有意义的,如果你检查你的 if 语句,它会说是否有错误,或者没有 obj(!将考虑 null,未定义为 true)它将进入第一个块。没有逻辑它去 else 并将 obj 作为 null 发送。
-
我的问题是它总是会在某个时候阻塞它的返回值,而在其他时候阻塞为
null -
看起来您的用户对象 id 以字符串形式存储在集合
"user":"ObjectId(5d3189a00789e24a23438a0d)"中,它应该是 objectId 类型。
标签: node.js mongodb api mongoose crud