问题描述
我一直在尝试这个新框架Loopback 4及其出色的功能,但我不知道哪一点很灵活,我在数据库上有以下模型:
{
"id": "string","lastUpdate": "2020-10-01T18:10:46.306Z","name": "string","logo": "string","data": [
{}
]
}
我想做的是使查询返回我的数据,但是作为数组,它有很多数据,因此我想对它进行分页,因此我考虑限制查询。我已经实现了如下查询:
{
"offset": 0,"limit": 10,"skip": 0,"where": {
"name": {"eq":"BengalaSpain"}
},"fields": {
"data": true
}
}
我试图将data属性限制为10,但是当然,此操作会影响属性本身,仅影响周围的包装对象。有什么办法可以实现我的目的?
谢谢大家!
解决方法
LoopBack 4过滤器在存储库级别应用,因为这些约束传递到ORM数据源连接器以转换为它们各自的本机查询(例如,对于SQL Server为TOP 10
)。
可能的解决方案是将data
字段链接到Relation。关系实质上是创建嵌套的存储库(例如hasManyRepository
),因此能够满足将data
隔离到其自己的存储库中的要求。
要快速创建关系,请从“模型”中删除该属性,然后使用lb4 relation
命令重新创建它。
从那里,可以利用现已启用的InclusionResolver并编写使用查询:
{
"where": {
"name": {"eq":"BengalaSpain"}
},"fields": {
"data": true
},"include": [
{
"relation": "<relation name here>","scope": {
"limit": 10
}
}
]
}
副作用是data
分离到其自己的表中。但是,由于database normalization,无论如何都应这样做。