【发布时间】:2019-08-22 02:02:30
【问题描述】:
我是 TypeORM 的新手。 我正在使用节点、打字稿、TypeORM 和 MySQL。 我不知道 JOIN 和 createQueryBuilder 在 TypeORM 中是如何工作的。
我有一个带有 user_id 字段的 Response 表,它与 User 表的 id 字段匹配。 关系是 response.user_id = user.id,在一对多关系中。 而且我不知道它如何与 TypeORM 一起工作
import { Entity, Column, PrimaryColumn, PrimaryGeneratedColumn, OneToMany } from 'typeorm';
import { User } from '../User/User';
@Entity("response")
export class Response {
@PrimaryColumn("varchar", { length: 80, unique: true, primary: true })
public id: string;
@PrimaryGeneratedColumn()
public bk_id: number;
@Column("varchar", { length: 80 })
public user_id: string;
@Column("varchar", { length: 80 })
public parent_request_id: string;
@Column("text")
public description: string;
@Column("integer")
public status_id: number;
@Column("integer")
public deleted: number;
@Column("timestamp")
public created_on: Date;
@Column("timestamp")
public last_update: Date;
@OneToMany(type => User, user => user.id)
users: User[];
}
和用户:
import { Entity, Column, PrimaryColumn, ManyToOne } from 'typeorm';
import { Response } from '../Response/Response';
@Entity("user")
export class User {
@PrimaryColumn("varchar", { length: 50, unique: true, primary: true })
public id: string;
@Column("varchar", { length: 255, unique: true })
public username: string;
@Column("varchar", { length: 255 })
public password: string;
@Column("varchar", { length: 150 })
public first_name: string;
@Column("varchar", { length: 255 })
public last_name: string;
@Column("varchar", { length: 355, unique: true })
public email: string;
@Column("timestamp")
public created_on: Date;
@Column("integer")
public userstatus_id: number;
@Column("integer")
public deleted: number;
@Column("timestamp")
public last_login: Date;
@ManyToOne(type => Response, response => response.user_id)
response: Response;
}
而我的Sql语句是这样的:
const result = await this.entityManager
.createQueryBuilder('Response')
.leftJoinAndSelect(
'Response.user_id',
'user',
'user.id = :id',
{ id: 'user_id' },
)
.where('response.parent_request_id = :parent_request_id', { parentRequestId });
我收到了错误:
"Response" alias was not found. Maybe you forgot to join it?
感谢任何帮助。
非常感谢。
【问题讨论】:
标签: mysql node.js typescript typeorm