具有多个参数的graphqljs解析器

时间:2018-03-08 02:58:28

标签: graphql resolve

我试图找出编写一个过滤多个参数的解析器的最佳方法。我有以下graphql类型

const userQuery = new GraphQLObjectType({
    name: 'Query',
    fields: {
        Users: {
            type: new GraphQLList(User),
            args: {
                userId: { type: GraphQLString }
            },
            resolve: function (_, { UserId}) {
                return new Promise((resolve, reject) => {
                   //Code to query the data store for the user with the given UserId
                })
            }
        }
    }
});

用户类型包含以下字段

  • 姓名
  • 用户ID
  • 类型
  • 性别

现在,如果我想引入基于名称过滤用户的功能,那么最好的方法是什么。我能想到的唯一方法是修改解析器以包含其他args,然后根据传入的内容将其发送到数据库。例如

const userQuery = new GraphQLObjectType({
    name: 'Query',
    fields: {
        Users: {
            type: new GraphQLList(User),
            args: {
                userId: { type: GraphQLString }
            },
            resolve: function (_, { UserId, name}) {
                return new Promise((resolve, reject) => {
                   //Check which argument is passed in and then run the query against the datastore
                })
            }
        }
    }
});

不是有更好的方法吗?如果我希望用户能够过滤另一个属性,那么它会变得更复杂,并且解析功能将变得庞大而复杂。

0 个答案:

没有答案