微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在存储库中选择此实体

如何解决如何在存储库中选择此实体

在 typeorm 中创建存储库方法时如何选择 this 实体?

我正在尝试在 Admin 实体上选择密码属性,但 this 选择了 Repository 而不是实体

@EntityRepository(Admin)
export class AdminRepository extends Repository<Admin> {

  async comparePasswords(password: string): Promise<boolean> {
    return await compare(password,this.password);
  }

}

解决方法

方法移至实体类。

,

当您像这样创建自定义存储库时:

admin.repository.ts

@EntityRepository(Admin)
export class AdminRepository extends Repository<Admin> {}

例如,您可以在服务或控制器(或其他类)中使用它,方法是将其注入构造函数,如下所示:

admin.service.ts

@Injectable()
export class AdminService {
    constructor(
        @InjectRepository(AdminRepository)
        private adminRepository: AdminRepository,) {}

    async findAdminByName(name: string): Promise<boolean> {
      return await = this.adminRepository.findOne({name});
    }
}

但是,如果您实际上不需要在存储库类 (take a look to all standard TypeOrm repository methods) 上实现自定义方法,则无需创建自定义存储库文件 admin.repository.ts 并即时注入即可实现相同的结果直接在服务上:

admin.service.ts

@Injectable()
export class AdminService {
    constructor(
        @InjectRepository(Admin)
        private adminRepository: Repository<Admin>,) {}

    async findAdminByName(name: string): Promise<boolean> {
      return await = this.adminRepository.findOne({name});
    }
}

也看看文档 Repository Pattern

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。