【发布时间】:2022-01-25 22:18:08
【问题描述】:
我知道 Nestjs 和 Angular 一样,不允许使用接口作为提供者。我该如何解决这个问题?
我想维护作为提供者的接口,以便更简单地测试它,或者最终更改数据库,例如 UserMongoDb。数据库对象位于单独的库中,我无法将它们更改为 abstract 类。
interface UserDatabase {
create();
read();
}
class UserOracleDb implements UserDatabase {
create()
{
throw new Error("Method not implemented.");
}
read()
{
throw new Error("Method not implemented.");
}
}
@Injectable()
export class UserRepository {
constructor(private repository: UserDatabase)
}
// ... module.ts
{
providers: [
{
provide: Database,// Wants a class not an interface
useValue: new UserOracleDb('USER_TABLE')
}
]
}
【问题讨论】:
标签: dependency-injection nestjs