无法使用$ pull(猫鼬)删除用户模型数组中的对象

时间:2020-01-22 19:31:13

标签: javascript reactjs database mongodb mongoose

我尝试了多种方法和方法,但我尝试使用$ pull方法

这是我的用户对象

enter image description here

我以前在用户对象中只有对象ID,但是现在我要删除一个完整的对象,我搜索发布的ID,然后尝试将其取出

    router.delete('/testing', (req, res, next) => {
    postModel.findByIdAndRemove(req.query.postid, (error, returnedDocuments) => {
        if (error) return next(error);

        userModel.findOneAndUpdate(
            // { email: req.query.email, posts: req.query.postid },
            { email: req.query.email },
            { $pull: { posts: { number: mongoose.Types.ObjectId(req.query.postid) } } },
            { new: true },
            function(error, user) {
                if (error) {
                    res.json(error);
                }
                console.log(`Post id ===== ${req.query.postid}`);
                console.log(`Email===== ${req.query.email}`);
                console.log(`returning user====${user}`);
                res.json('Successfully updated user');
            }
        );
    });
});

正在从postmodel中删除该帖子,但是我无法从用户发布的数组中删除该对象。

任何其他解决方案或关于这种情况发生的见解将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题是MongoDB在值之前比较类型,并且没有应用隐式类型转换,所以没有:

{ $pull: { posts: { number: req.query.postid } } }

您需要运行:

{ $pull: { posts: { number: mongoose.Types.ObjectId(req.query.postid) } } }