node.js - Nestjs 存储库模式配置挑战
问题描述
我试图弄清楚 Nest 中 TypeOrm 的“存储库模式”是如何工作的。我想要一个resources
文件,其中一个local
和一个远程文件包含不同的实体、控制器、模块等。请参阅屏幕截图
当应用程序正在构建时,我收到以下错误:
[Nest] 3186 - 11/19/2018, 10:44:43 PM [ExceptionHandler] No repository for "Project" was found. Looks like this entity is not registered in current "default" connection? +1ms
从Nest和 TypeORM 文档中,我可以进行三角测量,我必须告诉应用程序它可以在哪里找到实体,或者至少这是我认为错误试图告诉我的。
我正在使用 a.env
将 TypeORM 的配置拉入:
TYPEORM_CONNECTION = postgres
TYPEORM_HOST = localhost
TYPEORM_USERNAME = xyz
TYPEORM_PASSWORD = xyz
TYPEORM_DATABASE = xyz
TYPEORM_PORT = 5432
TYPEORM_SYNCHRONIZE = true
TYPEORM_LOGGING = true
TYPEORM_ENTITIES = src/server/**/**.entity{.ts,.js}
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AngularUniversalModule } from './modules/angular-universal/angular-universal.module';
import { JiraService } from './services/jira.service'
// modules
import { ProjectModule } from './resources/local/project/project.module'
// sync
import {ProjectsSync} from './sync/projects.sync'
@Module({
imports: [
ProjectModule,
TypeOrmModule.forRoot(),
AngularUniversalModule.forRoot(),
],
controllers: [],
providers:[JiraService, ProjectsSync],
})
export class ApplicationModule {}
项目.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ProjectService } from './project.service';
import { ProjectController } from './project.controller';
import { Project } from './project.entity';
@Module({
imports: [TypeOrmModule.forFeature([Project])],
providers: [ProjectService],
controllers: [ProjectController],
})
export class ProjectModule {}
项目服务.ts
import { Injectable, Inject } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Project } from './project.entity';
@Injectable()
export class ProjectService {
constructor(
@InjectRepository(Project)
private readonly projectRepository: Repository<Project>,
) {}
async findAll(): Promise<Project[]> {
return await this.projectRepository.find();
}
}
项目实体.ts
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Project {
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 500 })
name: string;
}
项目控制器.ts
import { Controller, Get } from '@nestjs/common';
import { ProjectService } from './project.service';
import { Project } from './project.entity';
@Controller('project')
export class ProjectController {
constructor(private readonly projectService: ProjectService) {}
@Get()
findAll(): Promise<Project[]> {
return this.projectService.findAll();
}
}
解决方案
只是一个疯狂的猜测,你有没有试过:
TYPEORM_ENTITIES = ./server/**/**.entity{.ts,.js}
和/或在 app.module.ts 中切换导入,将 TypeOrmModule 放在首位:
@Module({
imports: [
TypeOrmModule.forRoot(),
ProjectModule,
AngularUniversalModule.forRoot(),
],
controllers: [],
providers:[JiraService, ProjectsSync],
})
export class ApplicationModule {}
推荐阅读
- ocaml - 如何访问类型定义 OCaml 中的元素
- ios - use_framework 与 use_native_modules
- java - Java 无法识别 main 方法中的数组
- java - 如何在 Jenkins 自动执行战争文件?
- java - Gradle 打破了 Bash for 循环
- node.js - Node.js 应用程序在 model.find() 之后未呈现 mongoDB 集合
- java - 使用哨兵控制循环不断请求双值的程序
- android - 条件查询总是将房间数据库中的数据设置为 false
- apache-spark - SparkSession 命令与 apache spark 中的奴隶工人之间的关系
- python-3.x - 如何将形状数组(m,)重塑为(m,1)