簡體   English   中英

NestJS/TypeORM:無法讀取未定義的屬性“createQueryBuilder”

[英]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() ,而不應該添加到providersexports數組中。 當它被添加到這里時, ContactsRepository的注入令牌不再指向正確的實例,Nest 創建了該類,但沒有正確擴展Repository因為該代碼全部由 TypeORM 管理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM