2016-08-21 1 views
-2

Je dois essayer de stocker des données de tableau dans MongoDB en utilisant cette requête ci-dessous. mais chaque fois que j'exécute cette requête, son message de succès de show sans données signifie un tableau vide dans MongoDB,insertion intégrée de tableau dans mongodb

mon exigence est de stocker des données de tableau dans MongoDB comme ci-dessous la requête.

1). Ceci est mon script js node

this.childQuestionInfo = function(req, res, next){ 

    try{ 
     var quizArr = []; 
     var quizObj = { 
      'child.quiz.questionId' : req.params.questionId, 
      'child.quiz.score' : req.params.score, 
      'child.quiz.time' : new Date().toISOString() 
      }; 
     quizArr.push(quizObj); 
     var userObj = { 
      'userid' : req.params.userId, 
      'quiz' : quizArr 
     }; 
     var childinfoSave = new QuizChildInfo(userObj); 

     childinfoSave.save(function(err, data){ 
      if(err) return next(err); 
      res.send("Child questionId score and date saved successfully" + data); 
      console.log("Child questionId score and date saved successfully"); 
     });    
    }catch(err){ 
     console.log('Error While Saving the child questionId score and Date ' +err); 
     return next(err); 
     } 
    }; 

2). Ceci est mon schéma enfant

 userId:{ 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'User' 
      }, 
    quiz:[ 
      { 
      questionId:{ 
        type: mongoose.Schema.Types.ObjectId, 
        ref: 'question' 
           }, 
           score:{type:Number}, 
           time:{type:String} 
           } 
          ] 

3). Ceci est mon écran de sortie via postier

 "Child questionId score and date saved successfully 
    { __v: 0,\n _id: 57b9ac672c5791f8097d2132,\n levelsAttempted: [],\n quiz: [ { _id: 57b9ac672c5791f8097d2133 } ] }" 

Répondre

0

Essayez ceci en utilisant $push

this.childQuestionInfo = function(req, res, next){ 

    try{ 

     var queryObj={}; 
     var childObj={}; 
     var queryObj = {userid: req.params.userId}; 
     var options = {safe: true, upsert: true}; 
      childObj.questionId' : req.params.questionId, 
      childObj.score' : req.params.score, 
      childObj.time' : new Date().toISOString() 
      }; 

     QuizChildInfo.findOneAndUpdate(queryObj, { $push: childObj }, options, function (err, data) { 
      if(err) return next(err); 
      res.send("Child questionId score and date saved successfully" + data); 
      console.log("Child questionId score and date saved successfully"); 
     }); 


    }catch(err){ 
     console.log('Error While Saving the child questionId score and Date ' +err); 
     return next(err); 
     } 
    };