![](/img/trans.png)
[英]TypeORM TypeError: Cannot read property 'findOne' of undefined
[英]NestJS/TypeORM: Cannot read property 'createQueryBuilder' of undefined
在邮递员处调用“localhost:3000/contacts”(带或不带参数)会返回此错误,我不知道为什么。 我的后端连接到 PostgreSQL 数据库。
类型错误:无法读取 ContactsRepository.Repository.createQueryBuilder (...\\Documents\\Visual Studio Code Projects\\funds-backend-nestjs\\node_modules\\typeorm\\repository\\Repository.js:17:29) at ContactsRepository 处未定义的属性“createQueryBuilder” .getContacts (...\\Documents\\Visual Studio Code Projects\\funds-backend-nestjs\\dist\\contacts\\contacts.repository.js:17:34) 在 ContactsService.getContacts (...\\Documents\\Visual Studio Code Projects\\ Funds-backend-nestjs\\dist\\contacts\\contacts.service.js:24:39) 在 ContactsController.getContacts (...\\Documents\\Visual Studio Code Projects\\funds-backend-nestjs\\dist\\contacts\\contacts.controller。 js:25:37) 在 ...\\Documents\\Visual Studio Code Projects\\funds-backend-nestjs\\node_modules@nestjs\\core\\router\\router-execution-context.js:38:29 在 processTicksAndRejections(内部/进程/ task_queues.js:93:5) 在异步 ...\\Documents\\Visual Studio Code Projects\\funds-backend-nestjs\\node_modules@nestjs\\core\\router\\router-execution-context.js:46:28 在异步 c ...\\Documents\\Visual Studio Code Projects\\funds-backend-nestjs\\node_modules@nestjs\\core\\router\\router-proxy.js:9:17
我的代码如下所示:
@EntityRepository(Contact)
export class ContactsRepository extends Repository<Contact> {
async getContacts(filterDto: GetContactsFilterDto): Promise<Contact[]> {
const { name, search } = filterDto;
// const query = this.createQueryBuilder('contacts');
const query = await this.createQueryBuilder()
.select('contacts')
.from(Contact, 'contacts');
if (name) {
query.andWhere('contacts.name = :name', { name });
}
if (search) {
query.andWhere(
'(contacts.email LIKE :search OR contacts.telephone LIKE :search)',
{ search: `%${search}%` },
);
}
const contacts = await query.getMany();
return contacts;
}
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
@Entity({ name: 'contacts' })
export class Contact extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
email: string;
@Column()
html_de: string;
@Column()
html_en: string;
@Column()
name: string;
@Column()
telephone: string;
}
export class ContactsController {
constructor(private contactsService: ContactsService) {}
@Get()
getContacts(
@Query(ValidationPipe) filterDto: GetContactsFilterDto,
): Promise<ContactDto[]> {
return this.contactsService.getContacts(filterDto);
}
@Injectable()
export class ContactsService {
constructor(
@InjectRepository(ContactsRepository)
private contactsRepository: ContactsRepository,
) {}
async getContacts(filterDto: GetContactsFilterDto): Promise<Contact[]> {
return this.contactsRepository.getContacts(filterDto);
}
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ContactsController } from './contacts.controller';
import { ContactsRepository } from './contacts.repository';
import { ContactsService } from './contacts.service';
@Module({
controllers: [ContactsController],
imports: [TypeOrmModule.forFeature([ContactsRepository])],
providers: [ContactsRepository, ContactsService],
exports: [ContactsRepository, ContactsService],
})
export class ContactsModule {}
有人知道我该如何解决这个问题吗? 问候
ContactsRepository
应该只在TypeOrmModule.forFeature()
,而不应该添加到providers
或exports
数组中。 当它被添加到这里时, ContactsRepository
的注入令牌不再指向正确的实例,Nest 创建了该类,但没有正确扩展Repository
因为该代码全部由 TypeORM 管理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.