【问题标题】:Limit length array-type of property in Loopback 4 query?限制 Loopback 4 查询中属性的长度数组类型?
【发布时间】:2021-01-17 12:23:47
【问题描述】:

我一直在尝试这个新框架 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,但是当然,这个 dosnt 会影响属性本身,只是它周围的包装对象。有什么方法可以实现我的尝试吗?

提前谢谢大家!

【问题讨论】:

    标签: javascript node.js loopbackjs loopback4


    【解决方案1】:

    LoopBack 4 过滤器适用于存储库级别,因为这些约束被传递到 ORM 数据源连接器以转换为它们各自的本机查询(例如,TOP 10 用于 SQL Server)。

    一种可能的解决方案是将data 字段链接到Relation。关系本质上是创建嵌套的Repositories(例如hasManyRepository),因此能够满足将data隔离到自己的Repository中的要求。

    要快速创建关系,请从模型中删除属性并使用lb4 relation 命令重新创建它。

    从那里,可以利用现在启用的InclusionResolver 并编写使用查询:

    {
      "where": {
        "name": {"eq":"BengalaSpain"}
      },
      "fields": {
        "data": true
      },
      "include": [
        {
          "relation": "<relation name here>",
          "scope": {
            "limit": 10
          }
        }
      ]
    }
    

    副作用是将data 分离到自己的表中。但是,由于database normalization,这应该不顾一切地完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 2019-12-14
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2014-04-25
      相关资源
      最近更新 更多