TypeORM 从数据库查询现有视图

问题描述 投票:0回答:1

供参考:我正在将 NestJS (TypeORM) 与 SQL Server 数据库结合使用

TypeORM 中有没有办法查询数据库上的现有视图? 我知道 TypeORM 的View Entity,但是选项的描述将“表达式”参数列为required。 由于视图已存在于数据库中,因此我不需要(也不想)在后端重新创建它。

我发现有些人会做这样的事情:

import { ViewEntity} from 'typeorm';

@ViewEntity({
    expression: 'select * from database_view'}) 

}
export class View {}

但这看起来更像是一种解决方法,而不是一个实际的解决方案?

同样有趣的是,如果我只使用 @ViewEntity 而不像这样使用表达式属性,我不会收到错误:

import { ViewEntity} from 'typeorm';

@ViewEntity() 
export class View extends BaseEntity {
   @Column()
   col1: string
}

我认为有关 ViewEntity 的文档也留下了很大的解释空间: “视图实体是映射到数据库视图的类。您可以通过定义一个新类并用 @ViewEntity() 标记它来创建视图实体”

对我来说,第一句话听起来像是我能够映射到数据库上的(现有)视图,但第二句话则表示您需要“创建一个视图实体”。

所以问题是:查询数据库上现有视图而不在后端重新创建视图的正确方法是什么?

nestjs typeorm
1个回答
0
投票

我同意文档令人困惑,不需要“表达式”选项,您可以使用“同步”选项。

https://github.com/typeorm/typeorm/blob/master/src/decorator/options/ViewEntityOptions.ts

@ViewEntity({
  name: 'existing_view',
  synchronize: false
})

@ViewEntity('existing_view', {
  synchronize: false
})
© www.soinside.com 2019 - 2024. All rights reserved.