loopbackjs - 内部过滤器不起作用的环回包括
问题描述
我写了这个过滤器,我正在传递给我用 Loopbackjs 编写的端点。
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)
)}`
);
该pickupRequest
集合包含belongsTo
与pickupLocation 集合的关系。PickupLocation 集合包含一个名为的属性cityId
,我试图在该属性上应用 where 子句,但它不起作用。此外,我还想在pickupRequest 对象中获取pickupLocation 的字段,以便在我的表中使用它们。简单的包含完美地工作并根据需要显示数据,但是当where
应用子句时它不起作用并且还只显示pickupRequest对象但不包括其中的pickupLocation数据。此外,由于我使用分页,我需要它每次准确地返回 200 条记录。难道我做错了什么?这里的确切问题是什么?我正在使用环回 3
解决方案
在这里,您期望where
应用于pickupLocation
关系的过滤器的作用类似于 SQL 的内部连接。但是,在环回中,每当您执行include
查询时,框架都会在内部对每个模型的集合或表进行两个单独的查询并将它们组合起来;有效地使它像 SQL 的左外连接一样工作。因此,在上面的查询PickupRequest
列表中将包含所有对象,而与pickupLocation
模型的过滤位置无关。pickupLocation
关系只会出现在那些PickupRequest
记录中,在这些记录中,cityId = "5ee134da0138634c27a6e1dd"
关系将是一个null
对象。
为了克服这个问题,我想说,pickupLocation
根据 where 过滤器对模型进行主要查询{ cityId: "5ee134da0138634c27a6e1dd" }
并包含PickupRequest
模型。
推荐阅读
- d3.js - 使用 d3.js 更新每次迭代
- hyperledger-fabric - 如何在超级账本作曲家中通过 txid 获取块信息?
- sql-server-2014 - 从应该存在但不存在的 SQL 表中获取记录
- php - 如何从 table1 中获取不在 table2 内的数据?代码点火器
- android - 找不到 androidx.navigation:safe-args-gradle-plugin:1.0.0-alpha01
- java - Java 整数平均值
- android - 在 GridLayout 中动态添加相同大小的视图
- android - 强制视频占据整个 SIMpleExoPlayerView 的宽度
- python - 在python中丢失标准输出数据
- javascript - 如何在基于函数调用的构造函数中设置顶级属性方法?