【发布时间】:2017-07-28 14:51:05
【问题描述】:
我正在使用Node.js、mongoose、mongodb、express 和 angular。
我正在保存猫鼬模型中调查的回复。许多人会为特定调查提交答复。当第一个人提交调查回复时,我想为该调查创建一个新文档。当第二个,第三个....等人为同一个调查提交回复时,我只想将数组元素添加到以下架构中的回复数组。
当第一个人为新调查提交回复时,我想为新调查创建一个新文档。我怎样才能在猫鼬中做到这一点?
我在Mongoose.js: how to implement create or update? 中发现了类似的问题。 但是,如果找到_id,我想将新回复推送到回复[]的下一个数组索引,否则创建一个新文档
猫鼬模型:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var MCQReplySchema = new Schema({
_id : String,
surveyname: String,
replies :[{
replierId : String,
answers : [{
questionId : String,
answer : String
}]
}]
});
module.exports=mongoose.model('MCQReply',MCQReplySchema);
将数据保存到数据库:
router.post("/saveMCQAnswer", function(req, res) {
new MCQReply({
_id : '123',
surveyname: 'sample',
replies :[{
replierId : 'R001',
answers : [{
questionId : 'A001',
answer : 'answer'
}]
}]
}).save(function(err, doc){
if(err) res.json(err);
else
req.flash('success_msg', 'User registered to Database');
res.redirect("/");
});
});
【问题讨论】:
-
_id默认情况下实际上是隐式的,Mongoose 尝试创建一个唯一的_id- 请参阅mongoosejs.com/docs/guide.html#_id。您想自己指定 ID 是否有特定原因? -
是的 GPX。我将surveyId 传递给_id。调查已创建。创建的调查和调查回复的_id必须相同