mongoose不会按ID更新模型

时间:2016-06-12 11:47:56

标签: javascript node.js mongodb mongoose

apiRoutes.put('/intake/:id', function(req, res)  {
  var id = req.params.id;
  Intake.findById({id, function(err, intake) {
      if (err)res.send(err);

        intake.check = true;
        intake.save(function(err) {
        if (err) {return res.json({success: false, msg: 'Error'});}
      res.json({success: true, msg: 'Successful update check state.'});
    });
  }})
});

有什么问题?在控制台我看到ID,没关系,但数据库没有变化

3 个答案:

答案 0 :(得分:1)

{{> loginButtons}} 

答案 1 :(得分:1)

您向我们提供的信息太少,无法帮助您。但是我得到了一些关于如何找出问题的提示:(我在答案的最后添加了示例代码。)

使用正确的代码格式。错误更容易找到。

请避免function updateData(id, msg) { var data = outputData(id, msg); var modelToUpdate = collection.findWhere({id: data.id}); if(modelToUpdate) { modelToUpdate.set(data); } } 。大多数快递应用程序在路径管道末尾的HTML页面转换中提供错误。这仅在您致电res.send(err)时有效。如果您的应用在管道末尾没有提供错误页面生成,那么您可以使用res.next(err);

使用res.status(400).json({success: false, msg: err.message});res.sendres.next之后,必须先通过res.json结束函数的执行,然后再调用其中一个函数。在嵌套或异步方法调用的情况下,这可能非常复杂。但在你的例子中,这很容易。

使用一些日志输出来查看您到达的代码部分以及哪些部分代码。

return打印出该对象的结构。

希望这会有所帮助。 ; - )

console.dir(<object>);

答案 2 :(得分:0)

你可以用这个

Intake.update({_id: req.params.id},
                {
                   check : true
                },

                function(err){
                    if(err){
                     console.log(err);
                     res.status(400).send(err.errors);
                }else{
                    res.status(200).end();
                }
        });