Mongoose重新从db中删除记录

时间:2017-09-13 18:05:30

标签: mongodb mongoose

我的MongoDB文件夹集合如下所示:

enter image description here

我可以使用moongose并且只有id:55(文件夹1)从db中移除所有孩子吗? (文件夹2,文件夹3,文件夹4,文件夹5,文件夹6)和文件夹1,或获取ID 10(文件夹3)并删除文件夹3,文件夹4,文件夹5?

谢谢

1 个答案:

答案 0 :(得分:0)

在纯mongo中,不可能自动执行,但如果你使用mongoose,你可以使用post('remove')钩子。

folderSchema.post('remove', function(removedFolder) {
    folderModel.find({ parent: removedFolder.id }, function(err, subfolders) {
        subfolders.forEach(function(subfolder) {
            subfolder.remove();
        })
    })
});

请记住,只有在mongoose对象上调用.remove()方法后才会触发该钩子。这就是为什么在上面我们需要获取所有子文件夹并单独删除它们,而只是调用:

folderModel.remove({ parent: removedFolder.id })

您可以在此处阅读有关猫鼬钩子的更多信息:http://mongoosejs.com/docs/middleware.html