如何从Node.js函数将变量传递给graphql-tag?

3

我有以下函数:

import ApolloClient from 'apollo-boost'
import gql from 'graphql-tag'
import fetch from 'node-fetch'
global.fetch = fetch

const client = new ApolloClient({
    uri: 'myUri'
  })
const getPostsByCategory = async category => {
    const res = await client.query({
        query: gql`
          query articlesByCategory($id: String!) {
            postsByCategory(id: $id) {
              id
            }
          }
        `
      })
      console.log('res', res)
}

我想这样调用函数:
await getPostsByCategory('news')

然而我无法理解如何将category变量传递到查询中。我想在查询中使用graphql-tag,而不是将标记文字作为查询简单地传递。


如果您尝试使用类别替换$id,则可以通过以下方式获取该类别的帖子postsByCategory(id: ${category})。 - anibalajt
1个回答

6
你可以在 client.query 函数的参数中使用 variables 键,如下所示。
const getPostsByCategory = async category => {
  const res = await client.query({
    query: gql`
      query articlesByCategory($id: String!) {
        postsByCategory(id: $id) {
          id
        }
      }
    `,
    variables: {
        id: category,
    },
  });
  console.log('res', res);
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接