【问题标题】:How to delete Element In MongoDB property's array with MongooseJS?如何使用 MongooseJS 删除 MongoDB 属性数组中的元素?
【发布时间】:2017-04-09 04:20:11
【问题描述】:

我无法删除数组中的元素,该元素是 MongoDB 模型的属性。 请记住这是一个 NodeJS 模块 mongooseJS 而不是真正的 MongoDB,所以功能不一样..

目标:从 statusLiked 数组中删除一个对象。 | 我也确认 status.id 的值是正确的。

型号:

 Const userSchema = new mongoose.Schema({
  myStatus: Array,
  statusLiked: Array,
 )};

删除: 1.删​​除状态(作品)。 2.从User.statusLiked中删除状态(没有工作)。

exports.deleteStatus = (req, res, next) => {
  var CurrentPost = req.body.statusid; // sends in the status.id
  Status.remove({ _id: CurrentPost }, (err) => {
    if (err) { return next(err); }
    // vvvv this vvv
    User.update( {id: req.user.id}, { $pullAll: {_id: CurrentPost }, function(err) { console.log('error: '+err) } });

    req.flash('success', { msg: 'Status deleted.' });
    res.redirect('/');
  });

};

会发生什么:特定状态(对象)从数据库中删除。但是状态仍然保留在 User.statusLiked 数组中。

我想要发生的事情:要从 User.statusLiked 数组中删除的状态以及要从数据库中删除的状态。然后,重新加载页面并显示通知。

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    我让它以某种方式工作。工作代码:

    exports.deleteStatus = (req, res, next) => {
      var CurrUser = req.body.userid;
      var CurrentPost = req.body.post;
      Status.remove({ _id: CurrentPost }, (err) => {
        if (err) { return next(err); }
        console.log('meeee'+CurrentPost+'user: ' +CurrUser);
        req.flash('success', { msg: 'Status deleted.' });
        res.redirect('/');
      });
    User.update( 
          { _id: new ObjectId(CurrUser)},
          { $pull: { myStatus : { _id : new ObjectId(CurrentPost) } } },
          { safe: true },
          function (err, obj) {
            console.log(err || obj);
          });
    };
    

    【讨论】:

      猜你喜欢
      • 2013-06-02
      • 2016-02-25
      • 1970-01-01
      • 2020-04-16
      相关资源
      最近更新 更多