限制和跳过类型表单中的相关列



在使用查询生成器查找时,我试图限制相关数据,但我错过了这个概念。

这是我获取员工订单的代码:

import { getRepository, Repository } from "typeorm";
public async findEmployeeQuery(id : number) {
try {
let query = await getRepository(Employees)
.createQueryBuilder('employee')
.where('employee.id = :id' , {id})
.leftJoinAndSelect('employee.customers' , 'customers')
.getOne()
const user = query
return user
} catch (error) {
throw error
}
}

现在我想限制每个请求的客户数量——我该怎么做?

我尝试了限制和跳过选项,但这只适用于员工,而不适用于加入的数据。

您必须进行另一个查询来限制客户:

import { getRepository, Repository } from "typeorm";
public async findEmployeeQuery(id : number) {
try {
let user = await getRepository(Employees)
.createQueryBuilder('employee')
.where('employee.id = :id' , {id});
.getOne()
user.customers = await getRepository(Customers)
.createQueryBuilder('customer')
.where('customer.employee= :id' , {user.id});
.limit(10) // here you set limitation you want 
.getMany()
return user;
} catch (error) {
throw error
}
}

我想我找到了一个干净的方法。。。

可能会对某人有所帮助,因为TypeORM不支持关系中的分页(希望他们尽快添加!=(

let category: any = await Category.findOne({
where: {
id: id,
},
});
// finding products linked to that category
let products = await orm
.createQueryBuilder("products", "p")
.innerJoinAndSelect("p.categories", "c", "c.id = :categoryId", {
categoryId: id,
})
// implementing pagination
.skip(offset)
.take(limit)
.getMany();
// Attaching the array to the Category Object
category.products = products;
import { getRepository, Repository } from "typeorm";
public async findEmployeeQuery(id : number) {
try {
let user = await getRepository(Employees)
.createQueryBuilder('employee')
.where('employee.id = :id' , {id})
.leftJoinAndSelect('employee.customers' , 'customers')
.take(4) // limits it to 4
.skip(5) // offset 5 entities
.getOne()
return user
} catch (error) {
throw error
}
}

最新更新