如何解决如何在一个 GraphQL 请求中返回多个结果?
对于这个应用程序,我在 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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。