【问题标题】:how to limit and skip the related column in typeorm如何限制和跳过typeorm中的相关列
【发布时间】:2021-06-30 17:51:48
【问题描述】:

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

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

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
        }

    }

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

我尝试了限制和跳过选项,但只与员工合作,而不是与联合数据合作

【问题讨论】:

  • 首先尝试在 SQL 中执行此操作,以限制使用子查询所需的关系数量。但是这个功能真的有必要吗?因为这可能会对您的大规模绩效产生相当大的影响。
  • 你最好从customers表而不是Employees表中进行查询。
  • 我是为客户做的,效果很好,谢谢

标签: nestjs typeorm


【解决方案1】:

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

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
    }

}

【讨论】:

  • 谢谢你,我是从客户那里做的,效果很好
  • 记住这个方法,以防你有多个leftjoins,它会帮助你^^
  • 好吧我也用它
【解决方案2】:

从 "typeorm" 导入 { getRepository, Repository };

public async findEmployeeQuery(id : number) {
    try {
        let query = await getRepository(Employees)
        .createQueryBuilder('employee')
        .where('employee.id = :id' , {id})
        .leftJoinAndSelect('employee.customers' , 'customers')
        .take(4) //lIMITS its to 4
        .skip(5) //offset 5 entitities.
        .getOne()
        const user = query
        return user
    } catch (error) {
        throw error
    }

}

【讨论】:

  • 抱歉,它不会起作用,因为它限制了员工,我想限制由该员工创建的客户,无论如何感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 2020-10-03
  • 2021-02-20
  • 1970-01-01
  • 2020-01-30
相关资源
最近更新 更多