Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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 子文档更新后保存文档mongoose,mongodb_Javascript_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Javascript 子文档更新后保存文档mongoose,mongodb

Javascript 子文档更新后保存文档mongoose,mongodb,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我想更新子文档的值,然后保存主文档。因此,对子文档的更改将保存到数据库中。 这是我的自动取款机代码, 我找到了正确的子文档,我想这不是问题所在。但它不会保存更改 projectModel.findById({_id: req.body.projectId}) .then(function(doc){ question = doc.qp.questions.filter(q => {return q._id == req.body.questionId})[0];

我想更新子文档的值,然后保存主文档。因此,对子文档的更改将保存到数据库中。 这是我的自动取款机代码, 我找到了正确的子文档,我想这不是问题所在。但它不会保存更改

 projectModel.findById({_id: req.body.projectId})
  .then(function(doc){

    question = doc.qp.questions.filter(q => {return q._id == req.body.questionId})[0];

    var ans = question.answers.filter(a => {return a._id == req.body.answerId})[0];
    if(ans)
    {console.log(ans)}
    ans.value = req.body.answerValue;

    doc.save().then(res.send({questionId: req.body.questionId,answerId: req.body.answerId,answerValue: req.body.answerValue}))

  })
  .catch(error => console.log(error))
我的目标有点复杂,必须是。。它看起来像这样:

project={
         prop,
         prop,
         prop, 
         qp:{
             prop,
             prop,
             prop, 
             questions:[
                        question:{
                                  prop,
                                  prop,
                                  prop, 
                                  answers:[
                                           answerModels<--!this i want to find and edit!-->
                                          ]
                                 }
                        ]
            }
项目={
道具
道具
道具
质素保证:{
道具
道具
道具
问题:[
问题:{
道具
道具
道具
答复:[
回答模型
]
}
]
}

}/P>

你应该考虑猫鼬的功能。


这将允许您查找文档、编辑文档并将其保存回MongoDB

我是这样解决的:

projectModel.findById({_id: req.body.projectId},function (err, doc)
  {
    if(err)
    {
      console.log(err)
      return;
    }
    for (i in doc.qp.questions) {
      if(doc.qp.questions[i]._id == req.body.questionId)
      {
        for(y in doc.qp.questions[i].answers)
        {
          if(doc.qp.questions[i].answers[y]._id == req.body.answerId)
          {
            var test = doc.qp.questions[i].answers[y].value
            console.log(test);
            var query = "qp.questions"+i+"answers."+y+".value";

            doc.update({_id: req.body.questionId}, { '$set': {query : req.body.answerValue} });
            console.log(doc.qp.questions[i].answers[y].value);
            doc.save().then(() => res.send({questionId: req.body.questionId,answerId: req.body.answerId,answerValue: req.body.answerValue}))
          }
        }
      }
    }
  })
  .catch(error => console.log(error))

是的,我试过了,但没有成功,你看,我的对象有点复杂,{prop,prop,prop,qp:{prop,prop,prop,questions:{prop,prop,prop,answerModels]}