nest如何正确使用typeorm?

nest在运行时报错,下面是我的代码,第一次写nest,想问问是哪里有什么问题吗?请多多指教

ERROR [ExceptionHandler] Nest can't resolve dependencies of the BookService (?). Please make sure that the argument BookEntityRepository at index [0] is available in the AppModule context.

Potential solutions:
- If BookEntityRepository is a provider, is it part of the current AppModule?
- If BookEntityRepository is exported from a separate @Module, is that module imported within AppModule?
  @Module({
    imports: [ /* the Module containing BookEntityRepository */ ]
  })

app.module.ts

import { Module } from '@nestjs/common';
import { BookService } from './book/book.service';
import { BookModule } from './book/book.module';
import { BookController } from "./book/book.controller";
import { TypeOrmModule } from "@nestjs/typeorm";

@Module({
    imports: [
        TypeOrmModule.forRoot({
            type: 'mysql',
            host: 'localhost',
            port: 3306,
            username: 'root',
            password: 'root',
            database: 'root',
            entities: [__dirname + '/**/*.entity.{js,ts}'],
            synchronize: true,
            timezone: 'Z',
        }),
        BookModule,
    ],
    controllers: [BookController],
    providers: [BookService],
})
export class AppModule {
}

book.module.ts

import { Module } from '@nestjs/common';
import { BookController } from './book.controller';
import { BookService } from "./book.service";
import { BookEntity } from "./book.entity";
import { TypeOrmModule } from "@nestjs/typeorm";

@Module({
  imports: [TypeOrmModule.forFeature([BookEntity])],
  controllers: [BookController],
  providers: [BookService],
  exports: [BookService]
})
export class BookModule {
}

book.controller.ts

import { Body, Controller, Get, Post, Query } from '@nestjs/common';
import { BookService } from "./book.service";

@Controller('book')
export class BookController {
  constructor(private readonly bookService: BookService) {
  }


  @Get('findAll')
  findAll() {
    return this.bookService.findAll()
  }
}

book.service.ts

import { InjectRepository } from "@nestjs/typeorm";
import { Repository } from "typeorm";

@Injectable()
export class BookService {
    constructor(
        @InjectRepository(BookEntity)
        private readonly bookRepository: Repository<BookEntity>,
    ) {
    }

    async findAll(): Promise<BookEntity[]> {
        return await this.bookRepository.find()
    }
}
阅读 3.9k
1 个回答

我觉得你可以把 app.module 里边的 controllers 和 providers 删掉试试

顺便推销一下 我自己写的 nestjs-starter 模板 https://github.com/chenc041/n...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题