graphql - 如何在一个 GraphQL 请求中返回多个结果?
问题描述
我有一个 GRANDstack 应用程序。
对于这个应用程序,我在 Neo4j 中有一个 Cypher 请求,如下所示:
MATCH (c:CLUSTER)
WITH c
ORDER BY c.cluster_score DESC
LIMIT 5
MATCH (c)<-[:HAS_CLUSTER]-(a:ARTICLE)
WITH c,a
ORDER BY a.article_score DESC
RETURN c, collect(a)[..5] as articles
它返回每个集群中最好的文章。我必须在我的 React 界面中显示这个。我想在 GraphQL 中实现这个,但我不知道如何编码,因为我在这个请求中返回了 2 个东西。
如何在 GraphQL 中编写我的请求?
解决方案
您正在返回 2 个值c
,articles
但是无法在 GraphQL 类型中表示它。做一个中介类型,我称之为我的Intermediary
;
type CLUSTER {
id: ID
}
type ARTICLE {
id: ID
}
type Intermediary {
}
并在类型上嵌入你的CLUSTER
和ARTICLE
作为字段;
type Intermediary {
cluster: CLUSTER
article: ARTICLE
}
@cypper
然后在你的指令所在的地方使用这种类型;
type Query {
myQuery: Intermediary @cypher(...)
}
从密码查询中投影值时,会返回一个表示您的Intermediary
类型的对象;
MATCH (c:CLUSTER)
WITH c
ORDER BY c.cluster_score DESC
LIMIT 5
MATCH (c)<-[:HAS_CLUSTER]-(a:ARTICLE)
WITH c,a
ORDER BY a.article_score DESC
WITH c, collect(a)[..5] as articles
RETURN {
cluster: c,
articles: articles
}
推荐阅读
- python-3.x - NameError:名称“pytesseract”未定义
- javascript - Chrome onMessage 不返回值
- javascript - 在正则表达式模式中未检测到无效 URL
- mysql - 如何在netbsd上为mysql 5.7设置root密码
- jquery - 获取 HTML 对象并在 jQuery 中将其作为字符串传递
- python - wxPython中的parent.Bind和widget.Bind有什么区别
- javascript - redux thunk 获取 api 动作和 reducer
- excel - 在 Excel 中将 hh:mm:ss.000 转换为毫秒时 SECOND 函数中的舍入错误?
- c++ - 通过引用传递双指针
- javascript - 如何将包含灵活高度菜单的选项卡固定在窗口底部并使用 jQuery 在单击时向上滑动?