NestJS Отсутствует Зависимость

#node.js #backend #nestjs

Вопрос:

я столкнулся с проблемой с NestJS :

«[Гнездо] 5068 — 08/11/2021, 3:12:02 ОШИБКА PM [Обработчик исключений] Гнездо не может разрешить зависимости службы приложений (?). Пожалуйста, убедитесь, что аргумент UserRepository в индексе [0] доступен в контексте AppModule».

Я попытался добавить AppService в импорт, но безуспешно.

Как избежать этой ошибки?

приложение.модуль.ts :

 import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { User } from './user.entity';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: 'localhost',
      port: 5432,
      username: 'postgres',
      password: 'password',
      database: 'test',
      entities: [User],
      synchronize: true,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }
 

app.controller.ts :

 import { Body, Controller, Get, Post } from '@nestjs/common';
import { AppService } from './app.service';
import * as bcrypt from 'bcrypt';

@Controller('api')
export class AppController {
  constructor(private readonly appService: AppService) {
    
  }

  @Post('register')
  async register(
    @Body('name') name: string,
    @Body('email') email: string,
    @Body('password') password: string,
    @Body('phone') phone: string,
  ) {
    const hashedPassword = await bcrypt.hash(password, 12);

    return this.appService.create({
      name,
      email,
      password: hashedPassword,
      phone,
    })
  }
}
 

приложение.сервис.ts :

 import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class AppService {
  constructor(
    @InjectRepository(User) private readonly userRepository: Repository<User>
  ) {
  }

  async create(data: any): Promise<User> {
    return this.userRepository.save(data)
  }

}
 

user.entry.ts :

 import { Column, Entity, PrimaryColumn } from "typeorm";

@Entity('users')
export class User {
    @PrimaryColumn()
    id: number;

    @Column()
    name: string;

    @Column()
    email: string;

    @Column()
    phone: string;

    @Column()
    password: string;
}
 

Спасибо

Ответ №1:

Вам нужно добавить TypeormModule.forFeature([User]) imports в свой AppModule , чтобы настроить @InjectRepository(User) то, что вы используете. С модулем TypeORM, forRoot/Async предназначен для подключения к базе данных и общей конфигурации TypeORM, forFeature предназначен для динамической настройки поставщика