Express PUT请求仅在第二次尝试时发生

Express PUT请求仅在第二次尝试时发生,express,mongoose,Express,Mongoose,我有一个快速路由,它将帖子的“checked”值更改为其相反的布尔值(true=>false,false=>true)。由于某些原因,API返回的结果与数据库中的相反。如果我在PUT请求之后执行GET请求,我会得到PUT路由给我的相反的布尔值,它精确到数据库的状态 这是路线。有人看到这里发生了什么吗 app.put('/posts/:id', jsonParser, (req, res) => { let id = req.params.id; Post.findById(

我有一个快速路由,它将帖子的“checked”值更改为其相反的布尔值(true=>false,false=>true)。由于某些原因,API返回的结果与数据库中的相反。如果我在PUT请求之后执行GET请求,我会得到PUT路由给我的相反的布尔值,它精确到数据库的状态

这是路线。有人看到这里发生了什么吗

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部分似乎正在更新数据库,但是下面返回的对象仍然是旧数据

默认情况下,返回原始文档,您必须将
new
选项设置为true,才能获取修改后的文档而不是原始文档:

return Post.findByIdAndUpdate(id, { "checked": !post.checked }, { new: true }) ...

findbyiandupdate

我刚想出来。谢谢这就是答案。