[英]nestjs can't inject dependency in custom decorator
在有关授权的官方文档中,我遵循本指南并使用casl
lib
假设如果我想验证请求 man 是一篇文章的所有者,我必须从数据库中获取文章数据,并在user
和article.userId
之间比较userId
,所以我必须像这样注入一个 repoistory 依赖项
@Injectable()
export class DeleteHolePolicyHandler implements IPolicyHandler {
@Inject()
private readonly treeholeDaoService: TreeholeDaoService
async handle(ability: AppAbility, req: Request) {
const hole = await this.treeholeDaoService.findById(req.body.id)
return res
}
}
但我收到一个错误,它显示this.treeholeDaoService
未定义。
那么我应该怎么做才能让它工作呢?
这是复制链接
您不能注入依赖项,因为它是使用 new 声明的就地属性。 如文档中所述:
由于我们必须使用 new 关键字就地实例化策略处理程序,
ReadArticlePolicyHandler
class 不能使用依赖注入。 这可以通过ModuleRef#get
方法解决(在此处阅读更多内容)。 基本上,您必须允许传递一个Type<IPolicyHandler>
,而不是通过@CheckPolicies()
装饰器注册函数和实例。 然后,在您的守卫内部,您可以使用类型引用检索实例:moduleRef.get(YOUR_HANDLER_TYPE)
,甚至可以使用 ModuleRef#create 方法动态实例化它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.