我正在使用mongo db.I工作在节点js应用程序上。它在res.json部分停留。它在更新后显示关键字的结果。我想如果用户输入关键字那么它应该显示在json中但是之前在mongodb关键字成功更新时,res.json中会显示新关键字。我做错了什么?
cv2.getPerspectiveTransform(src, dst)
假设我已经在关键字数组中有'lio',当我输入'apple'时它应该显示两个结果但它只显示lio关键字。在页面重新加载后它会显示两个关键字。
答案 0 :(得分:0)
以下代码将尝试使用user._id
值作为条件将标记数组推送到单个匹配文档中。
User.findOneAndUpdate(
// <filter>
{_id:req.user._id},
// <update>
{$push:{keyword: {$each: req.body.tags}}},
// <options>
{returnNewDocument: true} // Optional, depending on if you want the updated doc.
// Callback
function callback(err, doc, raw) {
// Evaluate callback code...
res.json({user:req.user})
}
);
有关每个参数的用途的更多信息,请参阅findOneAndUpdate
文档。
答案 1 :(得分:0)
你这样做是错误的。 JavaScript是一种异步语言。在您的情况下,该函数返回数据而不等待响应。基本上,在执行更新功能之前返回数据。要解决此问题,请仅在更新功能内返回用户数据。
app.post('/keyword', isLoggedIn, function (req, res) {
User.findOneAndUpdate({_id:req.user._id},{$addToSet:
{keyword:req.body.tags}, {returnNewDocument: true}},(err, result) => {
if (err) return handleError(err);
return res.json({user:user, result:result, flag: 1});
});
});
您可以发送一个标志变量来检查该值是否已正确更新。