[英]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.