我在 mongodb 中有一个文档集合,该集合的每个文档都跟踪服务器上的一个文件,我想在删除相应文档时删除一个文件。 ¿我该怎么做?,将使用查询大量删除文档。
我有以下模型:
const AudioSchema = new Schema({
file: String,
title: String,
user: { type: Schema.Types.ObjectId, ref: 'Users' },
})
mongoose.model('Audio', AudioSchema)
如您所见,每个文档都会跟踪服务器文件系统中存在的文件,如果文档被删除,我想删除该文件。通常删除这些文档的方式是通过模型查询,(不是使用文档挂钩的选项,只是模型挂钩)示例:
const result = await Audio.deleteOne({
_id: audioannotation_id,}).exec()
我知道如果文档被文档删除了,我可以像这样使用“pree”钩子
AudioSchema.pre('deleteOne',{ query: false , document : true}, function(){
fs.unlink(this.file, err => { throw err})
})
但正如我之前提到的,强制不要使用文档钩子,因为使用模型查询会大量删除这些类型的文档。
如果我使用模型挂钩,我无法知道将删除哪个文档,因为 *this 不能作为对将被删除的文档的引用。
Audio.pre('deleteOne',{ query: true , document : false}, function(){
this.file // In this case **this** is not referencing the current document to be deleted
})
有什么建议吗?