我是NodeJS + Mongoose的新手,无法通过mongoose将数组推送到我的数据库。
我有以下架构:
const StudentSchema = mongoose.Schema({
name: {
type: String
},
quizzes: [{
quiz: String,
answers: []
}]
});
我尝试做的是有一系列测验对象,其中显示测验编号以及该特定测验的答案数组。
当我创建一个新用户时,student对象在mongoose中显示如下:
{
"_id" : ObjectId(id here),
"name" : "John",
"quizzes" : [ ],
"__v" : 0
}
我用来更新测验数组的功能:
module.exports.addQuiz = function(student_id, answers, callback){
Student.findByIdAndUpdate(
student_id,
{$push: {"quizzes": {answers: answers}}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}
);
}
这是我的路由,只要用student_id命中端点就调用该函数,然后将其用于查找学生并推送到数组
router.post('/quiz/:student_id', (req, res, next) => {
var student_id = req.params.id;
var answers = req.body.answers;
Student.addQuiz(student_id, answers, (err, answers) => {
//error handling
})
});
我试图通过向/ quiz /:student_id发送一个帖子请求来测试这个问题,其中我的数据库中有一个学生的ID,并在正文中发送了以下JSON:
[{
"quiz": "Quiz 1",
"answers": ["Answer 1", "Answer 2"]
}]
虽然当我尝试这个时它最终会挂在某个地方并且请求永远不会完成 - 我也得到一个" null"在控制台中。
任何人都可以帮助我吗?谢谢。