我想使用节点控制器在mongodb中存储值,但它会在mongodb中存储一个空数组
1)。这是用于接受req参数的节点控制器
this.childQuestionId = function(req, res, next){
try{
var userObj = {
'child.quiz.questionId' : req.params.questionId,
'child.quiz.score' : req.params.score,
//'child.quiz.time' : req.params.time
'child.quiz.time' : new Date().toISOString()
};
var childupdate = new childQuiz(userObj);
childupdate.save(function(err,data){
if(err) return next(err);
console.log("Data saved successfully");
res.send(data);
});
}catch(err){
console.log('Error While Saving the result ' +err);
return next(err);
}
}
2)。这是用于存储值的mongodb模式。这里我使用数组测验架构来存储值是数组
child:{
quiz:[
{
/*questionId:{
type: mongoose.Schema.Types.ObjectId,
ref: 'commonquestions'
},*/
questionId:{type:String},
score:{type:Number},
time:{type:String}
}
]
}
3)。这是我使用邮递员发送价值的json结果
{
"__v": 0,
"_id": "57a43ec68d90b13a7b84c58f",
"child": {
"quiz": []
}
}
答案 0 :(得分:0)
在控制器中尝试使用此代码
this.childQuestionId = function(req, res, next){
try{
var userObj = {
'questionId' : req.params.questionId,
'score' : req.params.score,
//'time' : req.params.time
'time' : new Date().toISOString()
};
var childupdate = new childQuiz();
childupdate.quiz.push(userObj);
childupdate.save(function(err){
if(err) return next(err);
console.log("Data saved successfully");
res.send(childupdate);
});
}catch(err){
console.log('Error While Saving the result ' +err);
return next(err);
}
}
答案 1 :(得分:0)
MongoDB save()函数接受2个参数document
和data
,但在您的代码中,您使用回调函数。你应该看看吗?
https://docs.mongodb.com/manual/reference/method/db.collection.save/#db.collection.save