使用 join-monster 库 (GraphQL) 对根查询字段进行分页
Posted
技术标签:
【中文标题】使用 join-monster 库 (GraphQL) 对根查询字段进行分页【英文标题】:Paginating a Root Query field using join-monster library (GraphQL) 【发布时间】:2017-08-17 20:01:33 【问题描述】:我正在努力使用以下文档的 join-monster 库实现应用层分页:http://join-monster.readthedocs.io/en/latest/pagination/
所有示例都是关于从特定节点对关系进行分页,但我想对 RootQuery 中的字段进行分页。我的 RootQuery 如下所示:
const RootQuery = new GraphQLObjectType(
name: "Query",
articles:
type: new GraphQLList(ArticleType),
args: ,
resolve(parentValue, args, context, resolveInfo)
return joinMonster(
resolveInfo,
,
sql =>
return knex.raw(sql).then(result =>
return result[0];
);
,
dialect: "mysql"
);
)
);
我想给文章字段分页,所以我试着把它变成一个连接:
const RootQuery = new GraphQLObjectType(
name: "Query",
fields: () => (
articles:
type: ArticleConnection,
args: gqlUtils.connectionArgs,
resolve(parentValue, args, context, resolveInfo)
return joinMonster(
resolveInfo,
,
sql =>
return knex.raw(sql).then(result =>
return gqlUtils.connectionFromArray(result[0], args);
);
,
dialect: "mysql"
);
)
);
但是当对它运行查询时,我得到了错误
函数必须返回/解析每个对象所在的对象数组 结果集中的一行。而是得到了 边...
现在我被困住了。我以错误的方式接近它吗?我该怎么做?
谢谢。
【问题讨论】:
【参考方案1】:这几乎是对的,问题是我在将数据发送到joinMonster之前调用了“connectionFromArray”,显然它必须在之后调用:
const RootQuery = new GraphQLObjectType(
name: "Query",
fields: () => (
articles:
type: ArticleConnection,
args: connectionArgs,
resolve(parentValue, args, context, resolveInfo)
return joinMonster(
resolveInfo,
,
sql =>
return knex.raw(sql).then(result =>
return result[0];
);
,
dialect: "mysql"
).then(data => connectionFromArray(data, args));
)
);
【讨论】:
以上是关于使用 join-monster 库 (GraphQL) 对根查询字段进行分页的主要内容,如果未能解决你的问题,请参考以下文章
我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphq