node.js - 如何使用 innerJoinAndSelect 服务加入 typeORM 中的表
问题描述
实体-pin
@Entity()
export class Pin {
@PrimaryGeneratedColumn()
@PrimaryColumn()
id: string;
@Column({name: 'town_name'})
townName: string;
@Column()
state_id: string;
@ManyToOne(() => State, state => state.stateId)
state: State;
}
实体状态
@Entity()
export class State {
@PrimaryGeneratedColumn({name: 'state_id'})
@PrimaryColumn()
stateId: string;
@Column({name: 'state_name'})
stateName: string;
}
服务:
const pin = pinRepository.createQueryBuilder('pin').leftJoinAndSelect('pin.state','state').getQuery();
console.log(pin);
我是 Nest 和 typeORM 的新手,并尝试加入这两个表。但它返回错误的查询:
SELECT "pin"."id" AS "pin_id","pin"."town_name" AS "pin_town_name", "pin"."state_id" AS "pin_state_id", "pin"."stateStateId" AS "pin_stateStateId", "state"."stateId" AS "state_stateId", "state"."state_name" AS "state_state_name" FROM "pin" "pin" LEFT JOIN "state" "state" ON "state"."stateId"="pin"."stateStateId"
虽然我想要这样的查询:
select id, town_name, Pin.state_id, state_name from Pin inner join State ON Pin.state_id = State.state_id
我在哪一部分通过了错误的事情?或者有什么办法可以克服这个问题。
解决方案
我不确定您正在努力解决什么问题,但以下应该有效。我认为问题出在实体关系定义中。
// pin.entity.ts
@Entity()
export class Pin {
@PrimaryGeneratedColumn()
id: string;
@Column({name: 'town_name'})
townName: string;
@Column()
state_id: string;
@ManyToOne(() => State, state => state.pins)
@JoinColumn({ name: 'state_id' })
state: State;
}
// state.entity.ts
@Entity()
export class State {
@PrimaryGeneratedColumn({name: 'state_id'})
stateId: string;
@Column({name: 'state_name'})
stateName: string;
@OneToMany(() => Pin, pin => pin.state)
pins: Pin[]
}
另外,将左侧更改为内部联接。
const pin = await pinRepository.createQueryBuilder('pin')
.innerJoinAndSelect('pin.state','state')
.getMany()
推荐阅读
- javascript - 我无法显示柱形图(Google Chart - 服务器端)
- excel - 计算可能更改行的单元格
- c# - 一个大型 DB 请求加上许多 Casts 与许多单个 DB 请求 - 这对于大量数据来说更快
- ruby-on-rails - Rails 在哪里定义了“邮件”方法
- c# - C# spawn manager 太快地创建一波又一波的敌人
- html - 问题是过渡不适用于背景颜色
- javascript - vue 异步函数返回 [对象承诺]
- rust - 可变借入带清理的两部分
- awk - AWK 脚本中的字段分隔符问题
- configuration - 分解一个 prometheus.yml 文件?