Знать указанные поля на стороне сервера в GraphQL / Sangria-Graphql

Когда клиент отправляет запрос, я хочу знать, какие поля клиент запрашивает для данных. Например,

{
  user {
    name
    address
  }
}

В приведенном выше запросе клиент запросил name поле и address поле пользователя. как узнать / получить указанные поля, например имя и адрес, на сервере sangria-graphql при выполнении запроса?

1 ответ

Решение

Ты должен использовать 4th параметр в resolve()

resolve: (obj, args, auth, fieldASTs) => {
    /* all your fields are present in selections
       please check the fieldASTs JSON path it may vary if you are using relay
                                                                connections */
  const requiredFields = fieldASTs.fieldNodes[0].selectionSet.selections.map(
      (set) => set.name.value
   );
  // requiredFields will contain the name and address
}
/* fieldASTs contains fieldNames, fieldNodes and every details about your Schema 
 you can get your specified fields inside fieldNodes like */
Другие вопросы по тегам