首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mongoose保存方法多次保存同一文档

Mongoose保存方法多次保存同一文档
EN

Stack Overflow用户
提问于 2019-06-14 18:21:42
回答 2查看 161关注 0票数 3

嗨,我在angular UI上有一个输入字段日期选择器。我选择date from字段并更新开始日期,直到它正常工作。但是如果我再次选择日期,它会复制文档,而不是更新文档。

工作代码:

router.post('/request/waiting/:startingDate', (req, res) => {
  const waiting = new WaitingRequest({
    startingDate: req.params.startingDate,
    requestID: req.body.requestID,
    contactInformation: req.body.contactInformation,
    orderInformation: req.body.orderInformation,
    requestInformation: req.body.requestInformation,
    installations: req.body.installations
  });
  waiting.save().then(result => {
    return res.status(201).json({
      message: 'Updated and Saved /waiting',
      result: result
    });
  });
});

到目前为止,我已经尝试过了,但它返回了null:

router.post('/request/waiting/:startingDate', (req, res) => {
  WaitingRequest.findOneAndUpdate({
    requestID: req.body.requestID
  }, {
    startingDate: req.params.startingDate
  }).then(result => {
    console.log(result)
    if (result) {
      return res.status(201).json({
        message: 'Updated and saved',
        result: result
      });
    } else {
      return res.status(404).json({
        message: "404 Request Not Found"
      })
    }
  })
});
EN

回答 2

Stack Overflow用户

发布于 2019-06-14 18:45:03

使用UpdateOne() mongoose方法更新您的数据,

router.post('/request/waiting/:startingDate', (req, res) => {
    let query = { requestID: req.body.requestID }
    let update = { $set: { startingDate: new Date(req.params.startingDate) } }
    WaitingRequest.updateOne(query, update,(error,result)=>{
        if(error) return res.status(404).json({ message: "404 Request Not Found" })
        return res.status(201).json({
            message: 'Updated and saved',
            result: result
        });
    })
});
票数 1
EN

Stack Overflow用户

发布于 2019-06-14 18:34:54

您必须在findOneAndUpdate中使用$set子句

编辑:改进代码以使用promise并发送一个Date对象作为开始日期

试试这个:

router.post('/request/waiting/:startingDate', (req, res) => {


WaitingRequest.findOneAndUpdate({
    requestID: req.body.requestID
  }, { $set: {
    startingDate: new Date(req.params.startingDate)
    }
  }).then(result => {
      return res.status(201).json({
        message: 'Updated and saved',
        result: result
      })
  }).catch(error => {
      res.send({ error })
   })
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56596180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档