mongoose + nodejs将数组推送到数据库

时间:2017-10-02 11:17:29

标签: arrays node.js mongodb mongoose

我是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"在控制台中。

任何人都可以帮助我吗?谢谢。

0 个答案:

没有答案