我有一条明确的路线,可以更改帖子"已检查"它的值与布尔值相反(true => false,false => true)。出于某种原因,API返回与DB中相反的情况。如果我在PUT请求之后执行GET请求,则得到PUT路由给出的相反布尔值,这对于DB的状态是准确的。
这是路线。任何人都能看到这里发生了什么?
app.put('/posts/:id', jsonParser, (req, res) => {
let id = req.params.id;
Post.findById( id )
.then(post => {
if(!post) {
return res.status(404).json({ message: 'Post not found' });
}
return Post.findByIdAndUpdate(id, { "checked": !post.checked })
})
.then(result => {
return res.status(202).json(result.apiRepr())
})
.catch(err => {
if(err) {
return res.status(500).json({ message: "There was a problem"})
}
});
});
.findByIdAndUpdate部分正在更新数据库,但是返回下面的对象仍然是旧数据。
答案 0 :(得分:1)
默认情况下findByIdAndUpdate会返回原始文档,您必须将return Post.findByIdAndUpdate(id, { "checked": !post.checked }, { new: true }) ...
选项设置为true才能获取修改后的文档而不是原始文档:
findByIdAndUpdate
Top Name = CONCATENATEX( TOPN( 1 , Table1 , Table1[Occurences] , DESC ) , Table1[Name] )
Api doc