Loopbackjs 过滤器内部不工作的环回包括
我已经编写了这个过滤器,我正在传递给我的端点,它是用Loopbackjs编写的Loopbackjs 过滤器内部不工作的环回包括,loopbackjs,loopback,angular-loopback,Loopbackjs,Loopback,Angular Loopback,我已经编写了这个过滤器,我正在传递给我的端点,它是用Loopbackjs编写的 const filter = { where: { status: { neq: "processed" } }, include: [ { relation: "vendor", scope: { fields: ["id", "name"] } },
const filter = {
where: { status: { neq: "processed" } },
include: [
{ relation: "vendor", scope: { fields: ["id", "name"] } },
{
relation: "pickupLocation",
scope: { where: { cityId: "5ee134da0138634c27a6e1dd" } },
},
],
limit: 200,
skip: 0
};
return this.http.get<IPickupRequest[]>(
`${environment.url}/PickupRequests?filter=${encodeURIComponent(
JSON.stringify(filter)
)}`
);
const过滤器={
其中:{状态:{neq:“已处理”},
包括:[
{关系:“供应商”,作用域:{字段:[“id”,“名称”]},
{
关系:“pickupLocation”,
范围:{其中:{cityId:“5ee134da0138634c27a6e1dd”},
},
],
限额:200,
跳过:0
};
返回this.http.get(
`${environment.url}/PickupRequests?过滤器=${encodeURIComponent(
stringify(过滤器)
)}`
);
pickupRequest
集合包含与pickupLocation集合的belongsTo
关系。pickupLocation集合包含一个名为cityId
的属性,我试图在该属性上应用where子句,但它不起作用。此外,我还希望在pickupRequest对象中获取pickupLocation字段,以便在表中使用它们。简单的include可以很好地工作,并根据需要显示数据,但是当应用where
子句时,它就不起作用,并且只显示pickupRequest对象,但不在其中包含pickupLocation数据。此外,由于我使用分页,我需要它每次准确返回200条记录。我做错什么了吗?这里的确切问题是什么?我在这里使用的是环回3,您希望在pickupLocation
关系上应用的where
过滤器的行为类似于SQL的内部联接。但是,在环回中,无论何时在查询中执行包含,框架都会在内部对每个模型的集合或表进行两次单独的查询,并将它们组合起来;有效地使它像SQL的左外连接一样工作。因此,在上面的查询中,PickupRequest
列表将包含所有对象,而不管过滤器在pickupLocation
模型的何处。pickupLocation
关系将仅出现在PickupRequest
记录中,其中cityId=“5ee134da0138634c27a6e1dd”
和其余位置,该关系将是一个null
对象
为了克服这个问题,我想说的是,根据{cityId:“5ee134da013863c27a6e1dd”}
在pickupLocation
模型上进行主要查询,其中筛选并包含PickupRequest
模型。任何帮助都将不胜感激