0
var GridFS = Grid(mongoose.connection.db, mongoose.mongo);
GridFS.remove({_id: mongoose.Types.ObjectId(req.params.file_id)}, function (err) {
    if (!err) {
        return res.send(204);
    } else {
        console.log("error");
    }
});

使用上面的代码,我可以从 fs.files 集合中删除文档。但它并没有从 fs.chunks 集合中移动。如何从集合 fs.files 和 fs.chunks 中删除文档。

4

1 回答 1

0

gridfs-stream模块在本机 GridStoreunlink方法的帮助下负责删除文件和块。
http://mongodb.github.io/node-mongodb-native/api-generated/gridstore.html#gridstore-unlink

如果您想完全清楚,可以查看模块源代码。

我认为您的问题是您尝试传递一些额外的Mongoose模式类型(mongoose.Types.ObjectId),而您根本不需要它。

只需将文件 _id(或文件名)传递给您的 GridFSremove函数,如下所示:

GridFS.remove({ _id: req.params.file_id }, (err) => {
    if (err) console.log(err)
    res.sendStatus(204)
})

还要确保不要犯我今天犯的同样错误,使用自定义文件 Schema中的Mongoose方法。 remove从逻辑上讲,它会删除文件而不是块,正如我一段时间后意识到的那样。

于 2017-05-17T19:00:50.123 回答