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集合中的文档。
答案 0 :(得分:0)
gridfs-stream 模块负责在原生GridStore unlink
方法的帮助下删除文件和块。
http://mongodb.github.io/node-mongodb-native/api-generated/gridstore.html#gridstore-unlink。
如果您想清楚地了解模块,可以查看模块source code。
我认为你的问题是你尝试传递一些额外的 Mongoose 架构类型(mongoose.Types.ObjectId
)而你根本不需要它。
只需将文件_id(或文件名)传递给GridFS remove
函数,如下所示:
GridFS.remove({ _id: req.params.file_id }, (err) => {
if (err) console.log(err)
res.sendStatus(204)
})
另外,请确保不要使用自定义文件架构中的 Mongoose remove
方法犯同样的错误。
从逻辑上讲,它将删除文件而不是块,因为我意识到一段时间后。