如何更新Mongo集合中的部分?

时间:2017-12-05 09:33:54

标签: node.js mongodb meteor heroku mongoose

这是我的服务器代码:

router.route('/addComment')
.post(function(req, res) {
  appRequest.update({"_id": req.body._id}, {$push:{comments:req.body.comments}}) // appRequest is my collection
});

以下是我定义集合的方式:

var locations = new mongoose.Schema({
    title: {
        type: String,
        required: true,
    },
    comments: [{
        identifier: String,
        text: String
    }]
});

我想更新注释并将用户新注释附加到comments数组。

当我尝试拨打/addComment网址时,我会在日志中收到以下内容(我在Heroku中托管):

  

at =错误代码= H12 desc ="请求超时"方法= POST   路径=" / addComment"主机= discounts-oman.herokuapp.com   request_id = f77cc261-e58a-4eea-a7ad-f74af57972f4 fwd =" 94.185.30.228"   dyno = web.1 connect = 0ms service = 30010ms status = 503 bytes = 0   协议= HTTPS

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

请求超时时,您会收到H12 errors。它会超时,因为您没有向客户端发送任何响应。例如,响应可以像这样发送(如果其余代码是正确的):

router.route('/addComment').post(function (req, res) {
  appRequest.update(
    { _id: req.body._id },
    { $push: { comments: req.body.comments } },
    {},
    function (err) {
      if (err) {
        return res.status(400).json(error);
      }

      return res.status(204).json();
    });
});

res.json()用于JSON响应。您可以使用res.send()进行常规回复。