gpt4 book ai didi

javascript - 有没有办法在 NestJS 中使用静态方法和依赖注入(inject)?

转载 作者:行者123 更新时间:2023-12-05 01:32:02 25 4
gpt4 key购买 nike

一个例子胜过冗长的解释:

// Backery.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Backery } from './Backery.entity';

@Injectable()
export class BackeryService {
constructor(
@InjectRepository(Backery)
private readonly backeryRepository: Repository<Backery>,
) {}

static myStaticMethodToGetPrice() {
return 1;
}

otherMethod() {
this.backeryRepository.find();
/* ... */
}
}
// Backery.resolver.ts
import { Bakery } from './Bakery.entity';
import { BakeryService } from './Bakery.service';

@Resolver(() => Bakery)
export class BakeryResolver {
constructor() {}

@ResolveField('price', () => Number)
async getPrice(): Promise<number> {
return BakeryService.myStaticMethodToGetPrice(); // No dependency injection here :(
}
}

如何替换 BakeryService.myStaticMethodToGetPrice() 以使用依赖注入(inject),以便我可以轻松地进行测试?

最佳答案

静态方法不能使用依赖注入(inject)。这是因为依赖项注入(inject)(至少对于 Nest)的想法是注入(inject)依赖项的实例,以便以后可以利用它们。

您拥有的代码是有效的,因为它将像静态方法所说的那样返回值 1,但是静态方法不能使用任何注入(inject)的实例值。您会发现大多数其他 DI 框架都遵循这种逻辑。

关于javascript - 有没有办法在 NestJS 中使用静态方法和依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65847961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com