【问题标题】:how can I remove specific array entry in my mongodb/mongoose model?如何删除我的 mongodb/mongoose 模型中的特定数组条目?
【发布时间】:2016-11-23 10:55:54
【问题描述】:

我的mongoose 模型看起来类似于:

var UsersSchema = new Schema({
    my_username: {type: String},
    blocked_users: [{
        my_username: {type: String, required: true},
        display_name: {type: String, required: true}
    }],
    created_at: {type: Date, default: Date.now},
    updated_at: {type: Date, default: Date.now}
});

现在,我创建了用于将新的被阻止的用户添加到此数组的端点。它看起来如下:

usersRoutes.post('/:username/blockedUsers/add', function(req, res){
    var username = req.params.username;
    var blockedUser = req.body.blockedUser;

    if (blockedUser != undefined) {
        User.findByIdAndUpdate(
            username,
            {
                $push: {"blocked_users": blockedUser},
            },
            {safe: true, upsert: true, new: true},
            function(err, user) {
                if(err)
                    console.log(err);

                res.json(user);
            }
        );
    }
});

而且效果很好。但是如何从该列表中删除特定用户? 有没有办法通过仅传递 my_username 而不是整个 blockedUser 对象来将他从该列表中删除?

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    试试这个:

    User.findByIdAndUpdate(_id, {
        $pop: {"blocked_users": blockedUser._id}  
    }, function (err, user) {
        // handle callback
    });
    

    blockedUser 是您要从列表中删除的用户

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 2020-03-19
      • 2017-06-17
      • 2020-02-27
      • 2021-04-01
      • 1970-01-01
      相关资源
      最近更新 更多