typescript 如何根据.env在NestJS中定义正确的Service?

unhi4e5o  于 2023-02-25  发布在  TypeScript
关注(0)|答案(1)|浏览(235)

很抱歉这个问题看起来很愚蠢,但我想这样的代码实现是有意义的。让我们假设用户服务有一个公共接口。

export interface IUsersService {
getOne(id:string): UserType
getAll(): UserType[]
}

我们有两种不同的UserService实现,假设是
CustomUserServiceDefaultUserService,这两个服务必须满足接口或者实现接口,抱歉我的英语。
如果我想创建一个逻辑,根据.env常量选择其中一个服务,该怎么办?

const userEnv = process.env.APP_USER
  ? process.env.APP_USER
  : 'default';

然后,我们应该有一些像Map或列表选择正确的服务由关键userEnv

const services: Record<string, UserInterface> = {
  default: { DefaultUserService },
  custom: {CustomUserService}
};

在正确构建这样一个逻辑之后,我们就可以将.env定义的服务导出到控制器或模块,无论什么。我上面做的逻辑是不正确的,我不知道如何使它与服务正确。你对此有什么建议吗?请。

hpxqektj

hpxqektj1#

您似乎喜欢使用IUsersService接口的不同实现来抽象服务。
可以使用Record来实现,所以这是一个不错的方法,可以将键userEnv设置为一个数字或类似的值,通过该键引用Record中使用myServiceMappings[userEnv]的服务实现,使用该键上用户服务的实现。

相关问题