我正在使用typeorm、typedi和typegraphql (不是nest.js),并试图将我的typeorm存储库注入服务,但它无法工作。
Container.set("UserRepository", dataSource.getRepository(UserEntity));
@Service()
export class UserService {
constructor(private userRepository: Repository<UserEntity>) {}
async createUser({
name,
email,
password,
}: Input {...}我得到的错误是
Service with \"MaybeConstructable<Repository>\" identifier was not found in the container. Register it before usage via explicitly calling the \"Container.set\" function or using the \"@Service()\" decorator."即使我可以用Container.get(UserRepository)打印出存储库
有人知道我做错了什么吗?
发布于 2022-11-07 14:41:35
尝试将此注释添加到注入的回购中。
import { InjectRepository } from 'typeorm-typedi-extensions';
constructor(@InjectRepository() private userRepository: Repository<UserEntity>) {}您可能需要安装typeorm-typedi扩展包
并确保在引导过程中有useContainer(Container);来注册typeorm容器,该容器应该是上述包中的容器。
发布于 2022-11-08 16:54:43
这就是解决办法:
await dataSource.initialize();
const schema = await buildSchema({
resolvers,
emitSchemaFile: true,
container: Container,
});export const UserRepository = dataSource.getRepository(UserEntity).extend({});
Container.set("UserRepository", UserRepository);export class UserService {
constructor(
@Inject("UserRepository") private userRepository: Repository<UserEntity>
) {}
}https://stackoverflow.com/questions/73928282
复制相似问题