【问题标题】:Use the first query result as a condition for the second query使用第一个查询结果作为第二个查询的条件
【发布时间】:2020-11-07 15:05:26
【问题描述】:

我有 2 个这样的查询

const featuredArticles = gql `
query featureArticles() {
  articles(where: {limit: 4, feature: true, sort: "published_at:desc") {
    id
  }
}
`;
const NO_FEATURE_ARTICLES_QUERY = gql`
query noFeatureArticles($slug: String!) {
  articles(where: { id_nin: ??? },limit: 4, sort: "published_at:desc") {
    ${SINGLE_ARTICLE_MODEL}
  }
}
`;

第一个查询将获取 4 篇最新精选文章的 ID,第二个查询将获取数据库中所有可用的文章。现在,我正在尝试更改第二个查询以从第一个查询中获取除 4 篇文章之外的所有文章,但我只是不知道如何将结果用作条件。你能给我一些提示吗?提前致谢!

【问题讨论】:

  • ids 数组,检查 graphiql/playground .... [xxx, yyy]
  • 你能告诉我如何将结果传递给一个数组,然后将该数组传递给另一个查询吗?我是新手,这件事让我很困惑:(
  • 获取结果,将id提取到数组中,作为参数传递
  • 我尝试提取结果并保存到这样的数组 arr=[result[0].id] 但是当第一个查询结束时该数组将消失。我不能把它传给第二个:(
  • 什么环境/语言?貌似js……怎么没了?复制的简单值存在,它不是一个空的参考...控制台记录它...您是否检查了如何在 graphiql/playground 中传递数组 [in variable query]?

标签: graphql


【解决方案1】:

我的 index.jsx 看起来像这样:

const Home = () => (
  <div style={{
    overflowX: 'hidden',
  }}
  >
    let arr=[]
    <Query query={FEATURE_ARTICLES_QUERY}>
      {({ data: { articles } }) => {
        if (!articles.length) {
          return null;
        }
        arr=[articles[0].id,.......,articles[10].id];
        return <SectionFeature articles={articles} />;
      }}
    </Query>
    <Query query={ARTICLES_QUERY} id={arr}>
      {({ data: { quotes } }) => {
        if (!quotes.length) {
          return null;
        }
        return <SectionQuote quotes={quotes} />;
      }}
    </Query>
  </div>
);

export default Home;

例如,我想将第一个查询的结果传递给 arr[],然后将其传递给第二个查询。但是数组将在第一个查询结束后立即消失。

更新:我做到了。非常感谢您的提示

【讨论】:

    猜你喜欢
    • 2015-03-16
    • 2013-11-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多