javascript - Typeorm:如何按关系查询
问题描述
如何使用 Active Record 模式按关系查询?
我有 2 个实体,并希望通过查询第二个获得第一:
角色:
import { User } from "./User";
@Entity({ name: "roles" })
export class Role extends BaseEntity {
@PrimaryGeneratedColumn()
public id: number;
@Column()
public name: string;
@CreateDateColumn()
public createdAt: string;
@UpdateDateColumn()
public updatedAt: string;
@OneToMany(() => User, user => user.role)
public users: User[];
}
用户:
@Entity({ name: "users" })
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
public id: number;
@Column()
public email: string;
@Column()
public name?: string;
@Column({ select: false })
public passwordSalt: string;
@Column({ select: false })
public passwordHash: string;
@CreateDateColumn()
public createdAt: string;
@UpdateDateColumn()
public updatedAt: string;
@Column()
public roleId: number;
@ManyToOne(() => Role, role => role.users, {
eager: true
})
@JoinColumn()
public role: Role;
}
我想查询用户Role.name
并订购Role.createdAt
,我编写buildQuery
了为用户模型构建查询并将查询传递给的函数findAndCount
构建查询:
export default function buildQuery ({
name,
email,
roleName,
orderByRoleCreatedAt,
limit,
offset
}: IUsersQuery) {
const query = {};
if (name) {
set(query, "where.name", Like(`${name}%`));
}
// how find users by user.role.name ???
if (roleName) {
set(query, "where.role.name", Like(`${roleName}%`));
}
// how order users by user.role.createdAt ASC ???
if (orderByRoleCreatedAt) {
set(query, "order.role.createdAt", orderByRoleCreatedAt);
}
if (email) {
set(query, "where.email", Like(`${email}%`));
}
set(query, "skip", offset);
set(query, "take", limit);
return query;
}
User.findAndCount(buildQuery(params));
解决方案
推荐阅读
- macos - 如何在macos上查找dmg文件的版本
- flutter - Flutter:Cloud Firestore serverTimestamp() 使文档读取加倍
- php - WooCommerce 结帐 - 更新运费
- ios - 扩展如何与 Swift 中的类一起工作?
- node.js - 是否可以从节点 js 编辑 JSON 中的字段?
- r - 无法在 R 中读取 shp 文件
- javascript - 为什么我的状态没有及时更新获取的数据,以便 useEffect 用新状态更新我的 DOM?
- php - 使用 php 我在 foreach 中遇到 if elseif else 语句有问题
- mysql - SQL如何使用datediff排除数据并且不存在于同一个表中
- java - 从 URL 获取图像并共享它在 Android 10(Q) 中不起作用