2017-04-30 3 views
1

ich eine mongodb Sammlung ‚Favorit‘ Das Schema für die Sammlung genannt haben sich wie folgt:finden Sie das Dokument und einfügen Wert in Array in MongoDB mit Node.JS Mongoose

var favoritesSchema = new Schema({ 

    postedBy: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'User' 
       }, 
    dishes:[ 
      { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'Dish' 
      } 
      ] 
    }, 

    {timestamps:true} 
    ); 

     var favoritesModel = mongoose.model('Favorite',favoritesSchema); 

Nun, was ich brauche zu finden ist das genaue Dokument, das eine spezifische postedBy hat und einen Wert in die Array-Feldschüsseln einfügen muss. Mein Code ist wie unten angegeben

Favorites.find({ postedBy : req.decoded._doc._id },function(err,favorite){ 
     favorite.dishes.push(req.body._id); 
     favorite.save(function(err,favorite) 
     { 
     if(err) throw err; 
     console.log('favorite updated'); 
     res.json(favorite); 
     }); 
    } 
    }); 

Dies ist jedoch mit Typeerror Fehler: Kann nicht Eigentum ‚Push‘ undefinierter lesen. Bitte helfen.

Antwort

1

favorite ist ein Array von Lieblingsdokumenten, weil Sie find verwenden. Sie möchten stattdessen findOne hier verwenden, sodass favorite das einzelne Dokument ist, das Sie aktualisieren möchten.

Favorites.findOne({ postedBy : req.decoded._doc._id }, function(err,favorite){ 
    favorite.dishes.push(req.body._id); 
    favorite.save(function(err,favorite) { ... 
+0

danke es hat funktioniert :) :) –

Verwandte Themen