Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 猫鼬不';t通过ID更新模型_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 猫鼬不';t通过ID更新模型

Javascript 猫鼬不';t通过ID更新模型,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,有什么问题吗?在控制台中,我看到ID,这是可以的,但数据库并没有变化您可以使用这个 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(funct

有什么问题吗?在控制台中,我看到ID,这是可以的,但数据库并没有变化

您可以使用这个

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.'});
    });
  }})
});
你可以用这个

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.'});
    });
  }})
});

你给我们的信息太少,帮不了你。但我得到了一些关于如何找出问题所在的提示:(我在回答的末尾添加了示例代码a)

使用正确的代码格式。错误更容易发现

请避免使用res.send(err)。大多数express应用程序在管线末端提供HTML页面翻译错误。这仅在调用
res.next(err)时有效。如果你的应用程序没有在管道末端提供错误页面生成,那么你可以使用
res.status(400).json({success:false,msg:err.message})

使用
res.send
res.next
res.json
后,必须通过
return
结束函数的执行,然后才能再次调用其中一个函数。在嵌套或异步方法调用的情况下,这可能非常复杂。但在你的例子中,这很容易

使用一些日志输出来查看您访问了代码的哪些部分,哪些没有

console.dir()打印出此对象的结构

希望这有点帮助。;-)


你给我们的信息太少,帮不了你。但我得到了一些关于如何找出问题所在的提示:(我在回答的末尾添加了示例代码a)

使用正确的代码格式。错误更容易发现

请避免使用res.send(err)
。大多数express应用程序在管线末端提供HTML页面翻译错误。这仅在调用
res.next(err)时有效。如果你的应用程序没有在管道末端提供错误页面生成,那么你可以使用
res.status(400).json({success:false,msg:err.message})

使用
res.send
res.next
res.json
后,必须通过
return
结束函数的执行,然后才能再次调用其中一个函数。在嵌套或异步方法调用的情况下,这可能非常复杂。但在你的例子中,这很容易

使用一些日志输出来查看您访问了代码的哪些部分,哪些没有

console.dir()打印出此对象的结构

希望这有点帮助。;-)


check
是否是架构中的有效属性?此外,您还需要考虑使用,这样您就可以用一个命令执行查找和更新。我添加所需的字段:在模式中是真的,但仍然不工作。您可以将您的模式添加到您的问题吗?是<代码>检查< /代码>模式中的有效属性吗?此外,您还需要考虑使用,这样您就可以用一个命令执行查找和更新。我添加所需的字段:在模式中是真的,但仍然不工作。您可以将您的模式添加到您的问题中吗?
Intake.findById(/*remove { here*/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.'});
    });
  })
apiRoutes.put('/intake/:id', function(req, res)  
{
  var id = req.params.id;
  Intake.findById(id, function(err, intake) 
  {
    if (err)
    {
      res.next(err);
      console.error(err);
      return;
    }

    console.log("Modify check attribute");
    intake.check = true;
    console.dir(intake);
    intake.save(function(err) 
    {
      console.log("Intake save called!");

      if (err) 
      {
        console.error(err);
        res.json({
          success: false, 
          msg: 'Error'
        });
        return;
      }

      console.log("Success");
      res.json({
        success: true, 
        msg: 'Successful update check state.'
      });
    });
  }})
});