节点Mongo补丁请求与使用await不同步

时间:2018-09-30 21:25:29

标签: node.js mongodb async-await

使用await时,我在同步退货方面遇到问题。 mongo中的所有信息更新都没有问题,问题在于res.status(200).send(updatedData);返回旧数据而不是修补数据。

const updateUserData = async (req, res) => {
if (!(req.params.id && req.body.id && req.params.id === req.body.id)) {
        const message =
          `Request path id (${req.params.id}) and request body id ` +
          `(${req.body.id}) must match`;
        console.error(message);
        return res.status(400).json({ message: message });
    }
try{
    const toUpdate = {};
    const updateableFields = ["username","firstName", "lastName","bio","settings","cardCollection", "avatar"];

    updateableFields.forEach(field => {
    if (field in req.body) {
      toUpdate[field] = req.body[field];
    }
    }); 
    const id = req.params.id;
    if(!id) return res.status(404).send({message:"id not found"})
    if(!toUpdate) return res.status(404).send({message:"text not found"})
    const updatedData = await User.findByIdAndUpdate(id, toUpdate);
    console.log(updatedData);
    res.status(200).send(updatedData);
}
catch(err){
  res.status(500).send({message:"unable to update data"})
}

}

1 个答案:

答案 0 :(得分:0)

您应该将第三个参数作为{new : true}传递给findByIdAndUpdate选项,以返回更新的文档。