いつでもサブドキュメントをオブジェクトにプッシュしようとしています。以下はPOSTのハンドラーです。まず、アカウントが調査に招待されたかどうかを確認します。すべてがチェックアウトされたら、回答を調査回答配列にプッシュします。
handler: function(req, res, next) {
var survey = req.params.survey;
var account = req.params.account;
Survey.findById(survey).exec(function(err, survey) {
if(err) { return handleError(res, err); }
if(!survey) { return handleError(res, 'Invalid Survey', true); }
if(!account) { return handleError(res, 'Invalid Account', true); }
var invite = _(survey.invites).find(function(i){
return i.account == account;
});
if(!invite) {
return handleError(res, 'No invite exists for user');
}
if(!survey.responses) {
survey.responses = [];
}
var response = survey.responses.push(req.params);
console.log(response); // returns an integer want it to return the subdocument
survey.save(function(err){
if(err) { return handleError(res, err); }
return res.send(response);
});
});
}
私のスキーマ:
var SurveyResponseSchema = new Schema({
account: {type: Schema.Types.ObjectId, ref: 'Account', required: true},
answers: [SurveyAnswerSchema],
complete: Boolean
});
var SurveySchema = new Schema({
start_date: Date,
end_date: Date,
title: String,
survey_questions: [SurveyQuestionSchema],
invites: [SurveyInviteSchema],
responses: [SurveyResponseSchema]
});