4

例如我有连接类型:

let usersType = new GraphQLObjectType({
    name: 'Users',
    description: 'users array',
    fields: () => ({
        array: {
            type: userConnection,
            description: 'all users',
            args: connectionArgs,
            searchFor: {
                type: GraphQLString
            },
            resolve: (root, args) => {
                return connectionFromArray(get(), args);
            }
        }
    })
});

在这种情况下,在查询中我只能指定(第一个,最后一个,之后,之前)参数,但是如果我需要传递一些额外的参数,比如用户名等,这可能吗?

基本上我需要类似的东西:

query {
    array (first: 1, userName: "name")
}

在用户类型中,我可以处理如下请求:

resolve: (root, args) => connectionFromArray(get(args.userName), args.args)
4

1 回答 1

5

是的,这是可能的,您只需要connectionArgs使用这样的新参数扩展中继助手:

args: {
   ...connectionArgs,
   searchFor: { type: GraphQLString }
}

然后在resolve函数中访问它:

resolve: (root, args) => {
   // if the field argument 'searchFor' exists
   if (args.searchFor) {
   ...
   }
   ...
}
于 2016-07-12T09:30:45.477 回答