gpt4 book ai didi

node.js - Nestjs 存储库模式配置挑战

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:00 25 4
gpt4 key购买 nike

我想弄清楚 Nest 中 TypeOrm 的“存储库模式”是如何工作的。我想要一个 resources 文件,其中一个 local 和一个远程文件包含不同的实体、 Controller 、模块等。见截图

enter image description here

构建应用程序时出现以下错误:

[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 文档我可以三角化,我必须告诉应用程序它可以在哪里找到实体,或者至少这是我认为错误试图告诉我的。

我正在使用 .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}

应用程序模块.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();
}
}

项目.entity.ts

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class Project {
@PrimaryGeneratedColumn()
id: number;

@Column({ length: 500 })
name: string;
}

项目.controller.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 {}

关于node.js - Nestjs 存储库模式配置挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53383242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com