我正在尝试使用gridfs删除mongodb数据库中的文件。 我想删除所有带有metadata.relation = id的文件。 这是我在NodeJS中的方法:
function deleteFiles(){
gfs.remove({'metadata.relation': req.body._id }, function(err){
if (err) return false;
return true;
})
}
错误是:
C:\用户\ Gaute \文件\ GitHub的\ WikiHelpSystem \ node_modules \猫鼬\ node_module 小号\ MongoDB的\ LIB \ MongoDB的\ GridFS的\ gridstore.js:1138
if(names.constructor == Array){^
TypeError:无法读取属性'构造函数'未定义的 在Function.GridStore.unlink(C:\ Users \ Gaute \ Documents \ GitHub \ WikiHelpSystem) \ node_modules \猫鼬\ node_modules \ MongoDB的\ LIB \ MongoDB的\ GridFS的\ gridstore.js:1138 :11)
答案 0 :(得分:6)
假设您正在使用gridfs-stream模块,那么当您使用对象调用gfs.remove
时,它会期望该对象包含_id
。
您需要先使用MongoDb驱动程序获取ID。
// This should be your files metadata collection, fs.files is the default collection for it.
var collection = db.collection('fs.files');
collection.findOne({'metadata.relation': req.body._id }, { _id : 1 }, function (err, obj) {
if (err) return cb(err); // don't forget to handle error/
gfs.remove(obj, function(err){
if (err) return false;
return true;
})
});
答案 1 :(得分:0)
gfs.files.remove({_id:_id} , function(err){
if (err){
console.log("error");
}else{
console.log("old file removed")
}
});