使用Relay + GraphQL(graphql-relay-js)连接并尝试确定优化查询数据源的最佳方法等。
一切正常,但连接结果被切片时效率低下。在下面的查询示例中,项目上的解析器将获得200多条待售记录727506341339,而实际上我们只需要返回1条。
我应该注意,为了完成这个请求,我们实际上做了两个db查询: 1.获取与销售相关的所有商品ID 2.获取每个项目ID的项目数据。
在测试和检查graphql-relay-js src时,看起来切片发生在最终的连接解析器上。
是否提供了一种方法,缺少嵌套连接或改变connectionFromArray的切片结果,这将允许我们切片提供给连接的结果(项目ID),然后在连接解析器中获取项目详细信息切片ID结果集?这将优化第二个查询,因此我们只需要查询1个项目的详细信息,而不是所有项目......
显然我们可以实现自定义或嵌套连接,虽然看起来这是有用的,因此我觉得我在这里遗漏了一些东西......
示例查询:
query ItemBySaleQuery {
viewer {
item (sale: 727506341339) {
items (first:1){
edges {
node {
dateDisplay,
title
}
}
}
}
}
}
答案 0 :(得分:1)
不幸的是,graphql-relay-js lib中没有记录解决方案......
Connections可以使用resolveNode函数直接在边缘节点上工作。示例:https://github.com/graphql/graphql-relay-js/blob/997e06993ed04bfc38ef4809a645d12c27c321b8/src/connection/tests/connection.js#L64