Mongoose:remove()为已删除的项返回true

Mr.*_* B. 6 database mongoose mongodb node.js express

即使用户已被删除,我的代码也会返回"用户已删除".在这种情况下,我宁愿抛出404,但我想尽可能少查询数据库.

有没有办法获得userNotFound(见下文)而无需手动检查用户是否在删除前存在?也许我错过了一个功能remove()或替代功能.

var itemId = 123;
Item.remove({id: itemId}, function(err) {
    if (err) {
        return res.json({success: false, msg: 'Cannot remove item'});
    }

    // !!!
    if (userNotFound) {
        return res.status(404).json({success: false, msg: 'User not found'});
    }  
    // /!!!


    res.json({success: true, msg: 'User deleted.'});
});
Run Code Online (Sandbox Code Playgroud)

提前致谢!

chr*_*dam 7

上述方法的问题userNotFound始终是undefined因为您没有在回调参数中定义它.最好使用该findOneAndRemove()功能,以便您可以返回找到的文档:

var itemId = 123;
Item.findOneAndRemove({ id: itemId }) 
    .exec(function(err, item) {
        if (err) {
            return res.json({success: false, msg: 'Cannot remove item'});
        }       
        if (!item) {
            return res.status(404).json({success: false, msg: 'User not found'});
        }  
        res.json({success: true, msg: 'User deleted.'});
    });
Run Code Online (Sandbox Code Playgroud)