Что означает второй аргумент при запросе GraphQL float?

Я делаю следующий запрос в GraphQL:

{
  metal(silver_bid_usd_toz: 1) {
    silver_bid_usd_toz
  }
}

который возвращается

{
  "data": {
    "metal": {
      "silver_bid_usd_toz": 16.45
    }
  }
}

Объект JSON, возвращаемый API, является плоским:

{
  silver_bid_usd_toz: 123,
  gold_bid_usd_toz: 123,
  copper_bid_usd_toz: 123
}

Я не понимаю, что int 1 в моем запросе graphql означает metal(silver_bid_usd_toz: 1)

Неважно, на что я его меняю, это может быть 1 или 355, но это необходимо для работы запроса. Почему я не могу просто сделать

{
  metal(silver_bid_usd_toz) {
    silver_bid_usd_toz
  }
}

Моя схема выглядит так:

 module.exports = new GraphQLSchema({
  query: new GraphQLObjectType({
    name: 'Query',
    description: '...',
    fields: () => ({
      metal: {
        type: MetalType,
        args: {
          gold_bid_usd_toz: { type: GraphQLFloat },
          silver_bid_usd_toz: { type: GraphQLFloat }
        },
        resolve: (root, args) => fetch(
          `api_url`
        )
        .then(response => response.json())
      }
    })
  })
});

Что именно происходит, когда вы отправляете запрос без аргументов?

luislhl 01.06.2018 04:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
1
1
294
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы передаете silver_bid_usd_toz в качестве аргумента для поля, но, по-видимому, вы не используете его в функции разрешения, поэтому он игнорируется.

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

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

Да, ты прав. Не удалось, потому что я заключил его в круглые скобки, это работает, как ожидалось: металл {silver_bid_usd_toz}

reknirt 01.06.2018 04:26

О, в этом есть смысл. Просто взглянув на него, я не заметил ошибки. Приятно знать, что вы заметили проблему. ;)

luislhl 01.06.2018 04:28

Другие вопросы по теме