2016-09-10 1 views
1

J'ai ce problème vraiment ennuyeux où je ne peux pas mettre à jour quoi que ce soit en utilisant Mongoose. et la documentation ne contribue pas du toutLorsque j'essaie d'insérer subdoc dans mongodb à l'aide de mongo, il retourne "ne peut pas utiliser la partie (..."

Voici mon schéma:.

var CRMModel = mongoose.model('CRM', new Schema({ 
    title: { type: String, index: true } 
    , author: String 
    , remarks: String 
    , date: { type: Date, default: Date.now() }, 
    comments:[{ 
      title:String, 
      seq:Number, 
      date:{ type: Date, default: Date.now() } 
     }] 
    }) 
); 

et voici le code où je veux ajouter un commentaire au tableau comments:

CRMModel.update({_id:crmId.trim()},{ $push: { 'comments.title':   req.body.title, 'comments.seq': req.body.seq} }, 
     {upsert:true}, 
     function(err, customer){ 
      if(err){ 
       console.log(err); 
      } 
     } 
    ); 

A ce stade, je reçois l'erreur:

{ [MongoError: cannot use the part (comments of comments.title) to traverse the element ({comments: []})] 
    name: 'MongoError', 
    message: 'cannot use the part (comments of comments.title) to traverse the element ({comments: []})', 
    driver: true, 
    index: 0, 
    code: 16837, 
    errmsg: 'cannot use the part (comments of comments.title) to traverse the element ({comments: []})' } 

J'ai cherché les problèmes similaires sur Stack Overflow mais je did't résoudre ce problème. Je serai reconnaissant si quelqu'un peut m'aider.

Répondre

0

Le « argument » à $push devrait être un champ de tableau, ce qui dans votre cas est comments:

{ 
    $push : { 
    comments : { 
     title : req.body.title, 
     seq : req.body.seq 
    } 
    } 
} 
+1

Merci beaucoup, je résous le problème avec votre aide codes.Your vraiment me sauver de coincé dans ce problème et je peux me reposer maintenant. O (∩_∩) O –