【问题标题】:Find the document and insert value into array in MongoDB using Node.JS Mongoose使用 Node.JS Mongoose 查找文档并将值插入 MongoDB 中的数组
【发布时间】:2017-04-30 13:47:56
【问题描述】:

我有一个名为 '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 的确切文档,并且需要将值插入到数组字段dish 中。我的代码如下所示

 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 失败:无法读取未定义的属性“推送”。 请帮忙。

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    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) { ...
    

    【讨论】:

    • 我需要提取同一个人的所有帖子并将其扔给用户。这是为了让他可以选择他需要编辑的记录,然后只对其进行更改。如果我仍然使用 find 而不是 findOne,我需要做哪些更改?
    猜你喜欢
    • 2017-09-14
    • 2022-10-06
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2014-08-02
    • 2011-08-11
    • 2011-12-04
    • 2012-04-14
    相关资源
    最近更新 更多