GraphQL 将参数传递给子解析

标签 graphql graphql-js

我在 User 和 Post 之间有关系。这就是我查询用户帖子的方式。

const UserType = new GraphQLObjectType({
  name: 'User'
  fields: () => ({
    name: {
      type: GraphQLString
    },
    posts: {
      type: new GraphQLList(PostType),
      resolve(parent, args , { db }) {
        // I want to get here the args.someBooleanArg
        return someLogicToGetUserPosts();
      }
    }
  })
});

主要查询是:
const queryType = new GraphQLObjectType({
  name: 'RootQuery',
  fields: {
    users: {
      type: new GraphQLList(UserType),
      args: {
        id: {
          type: GraphQLInt
        },
        someBooleanArg: {
          type: GraphQLInt
        }
      },
      resolve: (root, { id, someBooleanArg }, { db }) => {
        return someLogicToGetUsers();
      }
    }
  }
});

问题是 UserType 帖子的解析函数中的 args 是空对象,我如何将 args 从主查询传递给子解析函数?

最佳答案

解析根查询时,您可以使用对象分配将参数附加到返回的用户对象。
然后,在用户类型上,从根值(解析函数的第一个参数)解析参数。

例子:

const queryType = new GraphQLObjectType({
  name: 'RootQuery',
  fields: {
    users: {
      type: new GraphQLList(UserType),
      args: {
        id: {
          type: GraphQLInt
        },
        someBooleanArg: {
          type: GraphQLInt
        }
      },
      resolve: (root, { id, someBooleanArg }, { db }) => {
        return Promise.resolve(someLogicToGetUsers()).then(v => {
            return Object.assign({}, v, {
                someBooleanArg
            });
        });
      }
    }
  }
});

const UserType = new GraphQLObjectType({
  name: 'User'
  fields: () => ({
    name: {
      type: GraphQLString
    },
    posts: {
      type: new GraphQLList(PostType),
      resolve(parent, args , { db }) {
        console.log(parent.someBooleanArg);
        return someLogicToGetUserPosts();
      }
    }
  })
});

关于GraphQL 将参数传递给子解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39732223/

相关文章:

node.js - 必须使用值调用 loader.load() 函数,但得到 : undefined

javascript - 如何向 "GraphQL schema language"中的字段添加说明

graphql - apollo-graphql 服务器中的分页

javascript - GraphQl 中的动态(唯一)对象

graphql - 如何在 GraphQL 中查询以数组作为参数的对象列表

graphql 使用嵌套查询上的嵌套查询参数或嵌套查询上的父参数

javascript - 在 GraphQL 中的突变之前删除只读字段

node.js - 关于与 apollo-server 一起使用时如何处理 'graphql-redis-subscriptions' 身份验证的任何想法

postgresql - 使用分页时如何提高嵌套 graphql 连接的性能

GraphQL Playground : How to set subscription connectionParams?