如何修复命中 ObjectSet:PagingAboveConfiguredLimitNotAllowed 的 foundry 函数中的查询?
How to fix a query in functions within foundry which is hiting ObjectSet:PagingAboveConfiguredLimitNotAllowed?
我有数十亿行的留声机对象,我们正在通过对象集服务查询它
例如,我想获得某个城市的所有 DriverLicences。
@Function()
public getDriverLicences(city: string): ObjectSet<DriverLicences> {
let drivers = Objects.search().DriverLicences().filter(row => row.city.exactMatch(city));
return drivers ;
}
我在尝试从 slate 中查询时遇到此错误:
ERROR 400: {"errorCode":"INVALID_ARGUMENT","errorName":"ObjectSet:PagingAboveConfiguredLimitNotAllowed","errorInstanceId":"0000-000","parameters":{}}
我知道我可能正在检索超过 100 000 个结果,但我需要所有结果,因为前面实现的逻辑是由另一个团队构建的复杂的平板仪表板,我们无法重构。
这里的问题是,特别是在 Slate <> Function 连接器中,有一个“翻译层”序列化对象集的内容,并提供一个实现 property:value 对的响应数据结构对于集合中的每个对象。
这显然不适用于大型对象集,在这种情况下,将如此多的数据扔到浏览器中可能会淹没分配给选项卡的资源。
从上下文来看,您可能正在将现有的 Slate 应用程序迁移到 Functions;在当前版本中,查询如何限制结果数 returned?肯定不会是return几十万个结果在前端做进一步处理吧? (如果是这样,那可能是 anti-pattern 考虑寻址)。
至于您当前可以探索的选项,您可以对对象集进行排序,然后将较小的限制指定为 return:
Objects.search().DriverLicences().filter(row => row.city.exactMatch(city)).orderBy(date_of_issue).take(100)
您可以在函数文档 参考 Ontology API 条目中找到更多详细信息:对象集 在 排序和限制 部分。
当 return 一个 ObjectSet
到 Slate 时,您甚至可以解决(当前)缺少分页的问题,方法是使用 属性 订购的最后一个值(即date_of_issue
) 作为 后续 请求和 return 下一个 N
对象中的过滤器。
如果您需要一个 Slate table 或 HTML 小部件,它可以在一组结果上呈现,然后根据用户操作获取下一页。
我有数十亿行的留声机对象,我们正在通过对象集服务查询它 例如,我想获得某个城市的所有 DriverLicences。
@Function()
public getDriverLicences(city: string): ObjectSet<DriverLicences> {
let drivers = Objects.search().DriverLicences().filter(row => row.city.exactMatch(city));
return drivers ;
}
我在尝试从 slate 中查询时遇到此错误:
ERROR 400: {"errorCode":"INVALID_ARGUMENT","errorName":"ObjectSet:PagingAboveConfiguredLimitNotAllowed","errorInstanceId":"0000-000","parameters":{}}
我知道我可能正在检索超过 100 000 个结果,但我需要所有结果,因为前面实现的逻辑是由另一个团队构建的复杂的平板仪表板,我们无法重构。
这里的问题是,特别是在 Slate <> Function 连接器中,有一个“翻译层”序列化对象集的内容,并提供一个实现 property:value 对的响应数据结构对于集合中的每个对象。
这显然不适用于大型对象集,在这种情况下,将如此多的数据扔到浏览器中可能会淹没分配给选项卡的资源。
从上下文来看,您可能正在将现有的 Slate 应用程序迁移到 Functions;在当前版本中,查询如何限制结果数 returned?肯定不会是return几十万个结果在前端做进一步处理吧? (如果是这样,那可能是 anti-pattern 考虑寻址)。
至于您当前可以探索的选项,您可以对对象集进行排序,然后将较小的限制指定为 return:
Objects.search().DriverLicences().filter(row => row.city.exactMatch(city)).orderBy(date_of_issue).take(100)
您可以在函数文档 参考 Ontology API 条目中找到更多详细信息:对象集 在 排序和限制 部分。
当 return 一个 ObjectSet
到 Slate 时,您甚至可以解决(当前)缺少分页的问题,方法是使用 属性 订购的最后一个值(即date_of_issue
) 作为 后续 请求和 return 下一个 N
对象中的过滤器。
如果您需要一个 Slate table 或 HTML 小部件,它可以在一组结果上呈现,然后根据用户操作获取下一页。