Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node.JS Mongoose查找文档并将值插入MongoDB中的数组_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

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

Javascript 使用Node.JS Mongoose查找文档并将值插入MongoDB中的数组,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我有一个名为“favorite”的mongodb集合,该集合的模式如下: var favoritesSchema = new Schema({ postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, dishes:[ { type: mongoose.Schema.T

我有一个名为“favorite”的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);
现在我需要的是找到具有特定postedBy的确切文档,并需要向数组字段插入值。我的代码如下所示

 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”。
请提供帮助。

收藏
是收藏文档的数组,因为您正在使用
查找
。您希望在此处使用
findOne
,以便
favorite
是您要更新的单个文档

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

我需要提取由同一个人完成的所有帖子,并将其扔给用户。这是为了让他选择需要编辑的记录,然后只对该记录进行更改。如果我仍然使用find而不是findOne,我需要做哪些更改?