使用Node.JS Mongoose查找文档并在MongoDB中将值插入到数组中

时间:2017-04-30 13:47:57

标签: javascript node.js mongodb express mongoose

我有一个名为“最喜欢的”的mongodb系列。该集合的架构如下:

    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);

现在我需要的是找到具有特定的postBy的确切文档,并且需要在数组字段菜肴中插入值。我的代码如下所示

 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);
       });
     }
   });

然而,这与TypeError失败:无法读取属性' push'未定义的。 请帮忙。

1 个答案:

答案 0 :(得分:2)

favorite是一组最喜欢的文档,因为您使用的是find。您希望在此处使用findOne,以便favorite是您要更新的单个文档。

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