2016-07-10 3 views
2

Например, у меня есть тип подключения:дополнительные аргументы «connectionArgs» Relay JS

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); 
      } 
     } 
    }) 
}); 

в этом случае в запросе можно указать только (первый, последний, после, до) аргументы, но что, если мне нужно передать какие-то дополнительные аргументы, такие как userName и т. д., возможно?

в основном мне нужно что-то вроде:

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

и пользователей типа I может обрабатывать запрос как:

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

ответ

4

Да, это возможно, вам просто нужно расширить помощник реле connectionArgs с новым аргумент следующим образом:

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

И затем получить к нему доступ в resolve Функция:

resolve: (root, args) => { 
    // if the field argument 'searchFor' exists 
    if (args.searchFor) { 
    ... 
    } 
    ... 
} 
Смежные вопросы