错误:找不到“”的存储库。看起来这个实体没有在当前的“默认”连接中注册?

主要思想是使用 typeorm 连接 3 个表。其中2个在开始时正常工作:

module.exports = {
"type": "mssql",
"host": "xxx",
"port": 1433,
"username": "xxx",
"password": "xxx",
"database": "xxx",
"entities": [
    "build/models/**/*.js"
]}

问题是当我尝试连接第三个表时,它使用其他表作为“ManyToOne”。然后我得到这个错误:

UnhandledPromiseRejectionWarning:错误:未找到 Result#RES_ControllerId 的实体元数据。检查您是否指定了正确的实体对象,以及它是否在连接选项中连接。

我解决了将“__dirname”添加到实体的问题。

module.exports = {
"type": "mssql",
"host": "xxx",
"port": 1433,
"username": "xxx",
"password": "xxx",
"database": "xxx",
"entities": [
  __dirname + "build/models/**/*.js"  <------ Here
]
}

然后错误变为:

未找到“Tabla1”的存储库。看起来这个实体没有在当前的“默认”连接中注册?

未找到“Tabla2”的存储库。看起来这个实体没有在当前的“默认”连接中注册?

我在这里很困惑,我不知道如何继续我的程序,如果你需要别的东西也没问题。提前致谢。

stack overflow Error: No repository for "" was found. Looks like this entity is not registered in current "default" connection?
原文答案

答案:

作者头像

尝试将 __dirname + "build/models/**/*.js" 更改为 "build/models/**/*{.js,.ts}"

作者头像

确保您使用 @Entity() 注释了实体类

例子

@Entity() <-- IMPORTANT
export class Tax {
  @PrimaryGeneratedColumn()
  taxId: number;

  @Column({ type: 'varchar', length: 48 })
  name: string;

  @Column({ type: 'varchar', length: 128 })
  description: string;

  @Column({ type: 'smallint' })
  rate: string;
}
作者头像

可能实体文件的名称不正确并阻止它找到实体文件。正确的实体文件名是 xxx.entity.ts。当我把它命名为xxx.ts时,typescript不会报错,但是nestjs会报错。

相关问题