2016-04-14 49 views
1

我與蒙戈和工作的NodeJS,我想一個response對象添加到question對象節點JS如何更新內內元素

這裏是我的工作模型的一部分:

questions: [ 
    { 
     name: String, 
     responses: [ 
      { 
       username: String, 
       reply: String 
      } 
     ] 
    } 
] 

我想「推」到responses像這樣的迴應:

for(var i = 0; i < req.body.response.length && i < survey.questions.length; i++) { 
    var response = req.body.response[i]; 

    if(response.trim() == "") continue; 

    // survey.questions[i].responses.push({ 
    var responseIndex = "questions[" + i + "].responses"; 
    Survey.findByIdAndUpdate(survey._id, { 
     "$addToSet" : { responseIndex : { 
      username: (req.user ? req.user.username : null), 
      reply: response 
     } } 
    }, function(error, survey) { 
     if(error) { 
      console.log(error); 
     } 
     console.log(survey); 
    }); 
} 

然而,問題是,它創建了一個新的問題的對象物W沒有數據。任何有識之士將不勝感激!

編輯:這裏是整個測量模型

/// <reference path="../../typings/tsd.d.ts" /> 

var mongoose = require("mongoose"); 

var schema = new mongoose.Schema({ 
    surveyName: String, 
    creator: String, 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    questions: [ 
     { 
      name: String, 
      responses: [ 
       { 
        username: String, 
        reply: String 
       } 
      ] 
     } 
    ] 
}); 

module.exports = mongoose.model('Survey', schema); 
// exports.Survey = mongoose.model('Survey', schema); 
+0

你使用mongoose.js嗎? – danilodeveloper

+0

我正在使用「mongoose」:「^ 4.4.10」,這是它在我的package.json中的說明 – Jujunol

+0

「Survey」是'question'模型的一個實例嗎? – danilodeveloper

回答

1

當你需要添加數組內的對象,你應該使用$push功能,因爲你有一個subdocumentquestion模型內部。 在你的情況下,內內,也許你可以這樣做:

Survey.findById(survey._id, function(error, res) { 
    for(var i = 0; i < req.body.response.length && i < survey.questions.length; i++) { 
     var response = req.body.response[i]; 
     if(response.trim() == "") continue; 
     (res.questions[i]).responses.push(response); 
    } 
    res.save(function(error, res) { 
     // survey updated with responses. 
    } 
} 

讓我知道這是否正常工作。

+0

很棒!謝謝! :) – Jujunol