微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在一个 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 个值 carticles,但是无法在 GraphQL 类型中表示它。做一个中介类型,我会称之为 Intermediary;

type CLUSTER {
   id: ID
}

type ARTICLE {
   id: ID
}

type Intermediary {
}

并将您的 CLUSTERARTICLE 作为字段嵌入到类型中;

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 举报,一经查实,本站将立刻删除。