【问题标题】:How to return several results in a only one GraphQL request?如何在一个 GraphQL 请求中返回多个结果?
【发布时间】:2020-12-24 00:31:19
【问题描述】:

我有一个 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 中编写我的请求?

【问题讨论】:

  • 这个密码是否在 @cypher 指令中?
  • 你好,是的

标签: graphql grandstack


【解决方案1】:

您将返回 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
}

【讨论】:

  • 你好@DanStarns 谢谢你,我去试试。
  • 你好@DanStarns,我试过你的代码,但我有一个错误,我不知道该怎么做。我可以给你看吗?
猜你喜欢
  • 2020-10-23
  • 2017-07-10
  • 2020-04-25
  • 2019-01-08
  • 2021-11-08
  • 2019-01-02
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
相关资源
最近更新 更多