如何串联进行graphql调用?反应-阿波罗

时间:2017-12-13 13:57:16

标签: apollo react-apollo

我正在使用hocreact-apollo中撰写2个查询。这是我的代码:

let queries = compose(
  graphql(gql`
    query getUnitSubcategories($input: UnitSubcategorySearchInput) {
      allUnitSubcategories(input:$input) {
        edges {
          node {
            unitSubcategoryId
          }
        }
      }
    }
  `, {
    name: 'subcategories',
    options: {
      variables: {
        input: {
          activeFlag: true,
        }
      }
    }
  }),
  graphql(gql`
    query getFinancialTransactions($input: FinancialTransactionLineSearchInput) {
      allFinancialTransactionLines(input: $input) {
        pageInfo {
          total
        }
        edges {
          node {
            financialTransaction {
              financialTransactionId
            }
          }
        }
      }
    }
  `, {
    name: 'financialTransactions',
    options: {
      variables: {
        input: {
          unitSubcategories: [
            ....
          ]
        }
      }
    }
  })
);

您可以看到我在第一个查询中收到unitSubcategories,并且需要将它们传递给第二个查询。所以我不想开始第二个查询,直到我得到第一个查询的结果。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

您想要使用skip配置。见https://www.apollographql.com/docs/react/basics/queries.html#graphql-skip

在您的示例中,您可能希望在第二个查询中定义skip配置,如下所示:

{
  name: 'financialTransactions',
  skip: ({ unitSubcategories }) => !unitSubcategories,
  options: ({ unitSubcategories }) => ({
    variables: {
      input: {
        unitSubcategories
      }
    }
  })
}

您只希望在收到第一个查询的结果后运行第二个查询。然后使用options作为函数,以便您可以从props计算它们。