graphql Ошибка проверки типа FieldsConflict, возникающая, когда псевдоним не используется

Я получаю сообщение об ошибке "Ошибка проверки типа FieldsConflict", когда я не использую псевдонимы в своем запросе. пожалуйста, подтвердите, если это ожидается или есть обходной путь

{
    person(search: [{firstname: "DAN", lastname: "WATLER", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }

    person(search: [{firstname: "FRANK", lastname: "TEE", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }
}

Выше код дает ошибку проверки, но если я использую псевдонимы, показанные ниже, ошибка не приходит, и я получаю успешный ответ.

Я не хочу использовать псевдонимы, пожалуйста, предложите, если есть обходной путь. Спасибо!

{
    dan: person(search: [{firstname: "DAN", lastname: "WATLER", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }

    frank: person(search: [{firstname: "FRANK", lastname: "TEE", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }
}

1 ответ

Решение

Обычно GraphQL возвращает данные в виде объектов JSON, и невозможно иметь 2 (допустимых) объекта в документе JSON с одинаковым ключом (в вашем случае person). Следовательно, довольно невозможно достичь того, что вы описываете.

Результат вашего первого запроса будет выглядеть примерно так:

{
  "data": {
    "person": {
      "firstname": "DAN",
      ...
    },
    "person": { // this is not valid
      "firstname": "FRANK"
      ...
    }
  }
}

И именно поэтому вы должны использовать alias,

Другой вариант - посмотреть, есть ли у сервера GraphQL запрос, который возвращает список person и результат будет внутри массива, например:

{
  "data": [
    {
      "firstname": "DAN",
      ...
    },
    {
      "firstname": "FRANK",
      ...
    }
  [
}
Другие вопросы по тегам