使用 GridFSBucket 删除 .files 和 .chunk
Delete .files and .chunk with GridFSBucket
我正在尝试同时删除 .files 和 .chunk 数据,但我找到的所有帖子要么已过时,要么不适用于我的问题。
这是我的后台路由:
const mongoose = require("mongoose");
const config = require("config");
const db = config.get("mongoURI");
let gfs;
const conn = mongoose.createConnection(db);
conn.once("open", () => {
gfs = new mongoose.mongo.GridFSBucket(conn.db, {
bucketName: "photos"
});
});
router.delete('/:imageID', async (req, res) => {
gfs.delete({_id: req.params.imageID, root:"photos"}, function(error){
test.equal(error, null);
}
有什么想法吗?
已解决!要成功删除 GridFS .files 和 .chunks,只需找到 obj_id 并执行 gfs.delete( obj_id)
代码:
router.delete("/:imageID", auth, async (req, res) => {
try {
const post = await Post.findOne({ image: req.params.imageID });
console.log(post);
if (post.user != req.user.id) {
res.status(401).send("Invalid credentials");
}
// Here:
const obj_id = new mongoose.Types.ObjectId(req.params.imageID);
gfs.delete( obj_id );
await post.remove();
res.json("successfully deleted image!");
} catch (err) {
console.error(err.message);
res.status(500).send("Server Error");
}
});
我正在尝试同时删除 .files 和 .chunk 数据,但我找到的所有帖子要么已过时,要么不适用于我的问题。
这是我的后台路由:
const mongoose = require("mongoose");
const config = require("config");
const db = config.get("mongoURI");
let gfs;
const conn = mongoose.createConnection(db);
conn.once("open", () => {
gfs = new mongoose.mongo.GridFSBucket(conn.db, {
bucketName: "photos"
});
});
router.delete('/:imageID', async (req, res) => {
gfs.delete({_id: req.params.imageID, root:"photos"}, function(error){
test.equal(error, null);
}
有什么想法吗?
已解决!要成功删除 GridFS .files 和 .chunks,只需找到 obj_id 并执行 gfs.delete( obj_id)
代码:
router.delete("/:imageID", auth, async (req, res) => {
try {
const post = await Post.findOne({ image: req.params.imageID });
console.log(post);
if (post.user != req.user.id) {
res.status(401).send("Invalid credentials");
}
// Here:
const obj_id = new mongoose.Types.ObjectId(req.params.imageID);
gfs.delete( obj_id );
await post.remove();
res.json("successfully deleted image!");
} catch (err) {
console.error(err.message);
res.status(500).send("Server Error");
}
});