Dependency injection Nestjs在使用依赖注入类';在拦截器中的方法,注入can';无法解决

Dependency injection Nestjs在使用依赖注入类';在拦截器中的方法,注入can';无法解决,dependency-injection,interceptor,nestjs,Dependency Injection,Interceptor,Nestjs,我在我的控制器中注入了一个提供者(FileFilter),我想在拦截器中使用它的filter方法 @Controller('file-uploader') export class FileUploaderController { constructor(private fileFilter: FileFilter) {} @Post() @UseInterceptors( FileInterceptor('file', { f

我在我的控制器中注入了一个提供者(FileFilter),我想在拦截器中使用它的filter方法

@Controller('file-uploader')
export class FileUploaderController {

    constructor(private fileFilter: FileFilter) {}

    @Post()
    @UseInterceptors(
        FileInterceptor('file', {
            fileFilter: this.fileFilter.filter,
        }))

    uploadFile(@UploadedFile() file) {
        return file;
    }
}
这是文件过滤器


@Injectable()
export class FileFilter {
    filter(req: any, file: MulterFile, callback: any) {
        if (!file.mimetype.match(ASSESSMENT_FILE_TYPE)) {
            return callback(new HttpException(null, HttpStatus.BAD_REQUEST), false);
        }
        return callback(null, true);
    }

}
当我使用postman请求API时,错误消息如下所示:

fileFilter: this.fileFilter.filter,
[0]                          ^
[0] TypeError: Cannot read property 'filter' of undefined

但是在post方法中,可以使用过滤器,这意味着FileFilter被正确注入,那么谁能解释为什么在拦截器中这不起作用呢?或者这是关于初始顺序还是什么?请提供帮助。

装饰程序具有不同的词法
this
,它不属于该类,因此
this.fileFilter.filter
未定义,因为
this
没有名为
fileFilter
的属性。我相信您需要将
filter
方法保存为函数,而不是类的一部分,以便像这样使用它,