gpt4 book ai didi

nestjs - 如何在带有typeorm的nestjs项目中使用外部实体?

转载 作者:行者123 更新时间:2023-12-04 02:52:59 26 4
gpt4 key购买 nike

我正在尝试使用在项目之外定义的类型 orm 实体。也就是说,我有两个项目:models 和 core-api。 Models 是一个导出实体定义的 npm 包。因此,从 core-api(nestjs 项目) 我正在尝试使用这些实体定义连接。像这样的东西:

@Module({
imports: [ TypeOrmModule.forRoot({
type: 'postgres',
host: 'postgres',
port: 5432,
username: 'myuser',
password: 'mypass',
database: 'mydb',
entities: [
__dirname + '../node_modules/something/models/src/*.entity.ts'
],
synchronize: true,
}), AModule ],
controllers: [],
providers: [],
})
export class AppModule {}

然后,在 A 模块中,我从 npm 包中导入 A 实体:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AsController } from './As.controller';
import { AsService } from './As.service';
import { A } from 'something/models';

@Module({
imports: [TypeOrmModule.forFeature([ A ])],
controllers: [AController],
providers: [AService],
})
export class AModule {}

这最终导致下一个错误:
RepositoryNotFoundError: No repository for "A" was found. Looks like this entity is not registered in current "https://stackoverflow.com/a/54191513/3943197https://stackoverflow.com/a/54191513/3943197default" connection?
由于我不明白它是如何在幕后工作的,所以我对如何遵循非常迷茫。我看到了 typeorm 和 @nestjs/typeorm 的代码,但我不知道如何解决它。

谢谢!

更新:
我可以让它工作添加实体类,而不是像@serianox 说的路径。此外, something/models npm 包导出一个独立的嵌套模块。该模块导入/导出包上定义的实体。因此,我可以在主应用程序上注入(inject)实体。

最佳答案

您可以将对类的引用传递给“实体”而不是路径,
例如:

import {Entity1, Entity2} from '@models'

@Module({
imports: [ TypeOrmModule.forRoot({
type: 'postgres',
host: 'postgres',
port: 5432,
username: 'myuser',
password: 'mypass',
database: 'mydb',
entities: [
Entity1, Entity2
],
synchronize: true,
}), AModule ],
controllers: [],
providers: [],
})
export class AppModule {}

关于nestjs - 如何在带有typeorm的nestjs项目中使用外部实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54110369/

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