【问题标题】:Loopback join relation without selecting relation没有选择关系的环回连接关系
【发布时间】:2023-01-20 15:13:39
【问题描述】:

我正在尝试使用 loopback 4 构建一个具有 2 个实体之间关系的查询

客户.model.ts:

@model()
export class Customer extends Entity {
  // id, name properties
  @hasMany(() => Order)
  orders?: Order[];
}

订单.model.ts:

@model()
export class Order extends Entity {
  // id, desc properties
  @belongsTo(() => Customer)
  customerId: Customer;
}

我的目标是让所有至少有 1 个订单的客户但没有选择他们的订单,这是我的查询

    await customerRepository.find({ 
       include: [{ relation: "orders" }],
   });

我也试过:

    await customerRepository.find({ 
       include: [{ relation: "orders" }],
       fields: {propertyName:  }
   });

谢谢您的帮助!

【问题讨论】:

    标签: orm loopbackjs loopback loopback4


    【解决方案1】:

    使用 INNER JOIN 可以排除没有任何相关数据的条目(在您的情况下排除没有任何订单的客户),目前默认为 isn't supported in loopback。

    您可以使用我最近开发的这个新发布的 sequelize 扩展 loopback4-sequelize 也支持 inner joins。

    为了达到预期的结果,您需要将required设置为true,如here所述,因此您的过滤器对象将如下所示:

    {
      "include": [{
        "relation": "orders",
        "required": true, // returns only those customers who have orders
        "scope": {
          "fields": [] // exclude all fields in orders
        }
      }]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多