数组模式存储空值

时间:2016-08-05 07:31:03

标签: arrays node.js mongodb

我想使用节点控制器在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": []
}
}

2 个答案:

答案 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个参数documentdata,但在您的代码中,您使用回调函数。你应该看看吗?

https://docs.mongodb.com/manual/reference/method/db.collection.save/#db.collection.save