如果req.body为空,则从数据库中删除字段

时间:2019-01-03 12:54:57

标签: node.js mongodb

我正在更新projects集合中的文档。如下所示:

项目收藏

"_id" : ObjectId("5c2df5ccfb98b328c470597b"),
"clientName" : "abc",
"attachments" : [],
"status" : "ongoing",
"assignId" : ObjectId("5c2df3c3fb98b328c4705979"),
"upworkId" : ObjectId("5c2df956b84e902678f416fa")

现在,我从客户端获取的 upworkId 字段为空或为空,但是却获得了clientNamestatusattachments的新值。因此,我想删除upworkId字段并更新 project 集合中的其他字段值。我该怎么办?

我当前的更新查询是:

Project.findByIdAndUpdate(req.params.id, req.body)
  .then((project) => {
    if (!project)
      res.status(400).json({message: MESSAGE.PROJECT_NOT_FOUND});
    else 
      res.status(302).json({message: MESSAGE.PROJECT_UPDATED_SUCCESS});
})

注意:我需要从特定文档的集合中删除该字段,我不想从对象中删除该字段。

1 个答案:

答案 0 :(得分:0)

Project.findByIdAndUpdate(req.params.id, req.body)
  .then((project) => {
    if (project.length<0)
     then use $unset. Project.findByIdAndUpdate(req.params.id, { $set: req.body, $unset: { upworkId: '' } })
      console.log(result)
    else
 res.send('update sucessfully ')
      })