在TypeORM中找不到连接"默认"

Val*_*inV 9 postgresql node.js typeorm nestjs

我使用TypeJ和NestJS,我无法正确保存实体.

连接创建工作,postgres在5432端口上运行.凭证也可以.

但是,当我需要使用entity.save()保存资源时,我得到了:

Connection "default" was not found.


Error
    at new ConnectionNotFoundError (/.../ConnectionNotFoundError.ts:11:22)
Run Code Online (Sandbox Code Playgroud)

我检查了TypeORM ConnectionManager的源文件(https://github.com/typeorm/typeorm/blob/master/src/connection/ConnectionManager.ts),但似乎TypeORM第一次创建连接时它属于"默认"名称,如果我们不提供一个,这是我的情况.

我用TypeOrmModule设置TypeORM为

TypeOrmModule.forRoot({
      type: config.db.type,
      host: config.db.host,
      port: config.db.port,
      username: config.db.user,
      password: config.db.password,
      database: config.db.database,
      entities: [
        __dirname + '/../../dtos/entities/*.entity.js',
      ]
    })
Run Code Online (Sandbox Code Playgroud)

当然我的常数是正确的.有任何想法吗 ?

Sar*_*rya 13

您试图在不建立连接的情况下创建存储库或管理器。

尝试在const shopkeeperRepository = getRepository(Shopkeeper);函数中执行此操作。它会工作


Daw*_*ahl 7

如果其他人将来遇到此问题,请检查一下以防万一:

我不小心把“ user.save()”变成了“ userRepo.save(user)”。

(当然上面初始化连接是这样的:

const userRepo = getConnection(process.env.NODE_ENV).getRepository(User)
Run Code Online (Sandbox Code Playgroud)


小智 6

赞成的答案不一定正确,如果您不指定连接名称,它将默认为“默认”。

const manager = getConnectionManager().get('your_orm_name');
const repository = manager.getRepository<AModel>(Model);
Run Code Online (Sandbox Code Playgroud)

  • 我已经尝试过该连接管理器,但我遇到了同样的错误。 (4认同)