下面的查询获取全部clients个及其关联的products个.它还加入包含每个产品的历史期末库存的每个产品的ProductSnapshot.我想将ProductSnapshot联接限制为一条记录,这可以通过按id 'DESC'排序并将每个产品限制为一条记录来实现.实现这一目标的最佳方式是什么?

async findClientsProducts() {
  return await this.clientsRepository
    .createQueryBuilder('client')
    .leftJoinAndSelect('client.products', 'product')
    .leftJoinAndSelect('product.productSnapshots', 'productSnapshot')
    .getMany();
}

编辑:

通过修改条件以包含一个order子句,并修复ON子句以引用适当的字段,所选的答案让我完成了大部分工作.通过productSnapshot.id订购可确保您获得该产品的最新快照行.

async findClientsProducts() {
  return await this.clientsRepository
    .createQueryBuilder('client')
    .leftJoinAndSelect('client.products', 'product')
    .leftJoinAndMapOne(
      'product.productSnapshot',
      ProductSnapshot,
      'productSnapshot',
      'productSnapshot.product_id = product.id ORDER BY productSnapshot.id DESC',
    )
    .getMany();
}

推荐答案

您应该使用leftJoinAndMapOne

.leftJoinAndMapOne(
          'product.productSnapshot',
          ProductSnapshot,
          'productSnapshot',
          'product.productSnapshotId = productSnapshot.id',
        )

Javascript相关问答推荐

如何按预期聚合SON数据?

无法将nPM simplex-noise包导入在JS项目中工作

我不知道为什么我的JavaScript没有验证我的表单

我试图实现用户验证的reduxstore 和操作中出了什么问题?

vscode扩展-webView Panel按钮不起任何作用

React 17与React 18中的不同setState行为

为什么我的列表直到下一次提交才更新值/onChange

为什么Mutations 观察器用微任务队列而不是macrotask队列处理?

如何将Cookie从服务器发送到用户浏览器

编剧如何获得一个div内的所有链接,然后判断每个链接是否都会得到200?

您能在卸载程序(QtInsteller框架)上添加WizardPage吗?

查询参数中的JAVASCRIPT/REACT中的括号

未捕获的运行时错误:调度程序为空

打字脚本中方括号符号属性访问和拾取实用程序的区别

在D3条形图中对具有相同X值的多条记录进行分组

Cherrio JS返回父div的所有图像SRC

ComponentWillReceiveProps仍在React 18.2.0中工作

当S点击按钮时,我如何才能改变它的样式?

CSS网格使页面自动滚动

在ReactJS上挂载组件时获得多个身份验证请求