【问题标题】:mongoose finds but doesn't remove猫鼬找到但不删除
【发布时间】:2017-10-05 04:32:47
【问题描述】:

我正在找到任何符合我的条件的文档,我想删除这些文档。

MyModle.find({writer: req.body.id}, function(err, docs){
                if (err){ return console.log(err)}
                if (!docs || !Array.isArray(docs) || docs.length === 0){
                    return console.log('no docs found')}
                docs.forEach( function (doc) {
                    doc.remove();
                    console.log("Removed book with ID ",doc._id, "by writer ", req.body.id);
                });
            });

我的控制台正在打印消息,就好像文档已被删除一样,但它仍在集合中。 这里有什么问题?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    documentation for remove 中所述,仅当您满足以下任一条件时才会执行删除:

    • 传递回调函数:doc.remove(function() { console.log('removed!'); });
    • 或致电exec:doc.remove().exec()

    另见this question


    要修复您的代码,您可以替换:

    doc.remove();
    console.log("Removed book with ID ",doc._id, "by writer ", req.body.id)
    

    doc.remove(function() {
        console.log("Removed book with ID ",doc._id, "by writer ", req.body.id)
    });
    

    【讨论】:

    • 我应该修改示例中代码的哪一部分来得到这个?你能帮忙吗?
    • 我尝试了您的解决方案,但它们仍在收藏中。这里缺少什么?
    • @cplus 你试过打印错误吗? doc.remove(function(err) { console.log(err) })
    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2014-08-16
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多