Я делаю следующий запрос в 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())
}
})
})
});


Вы передаете silver_bid_usd_toz в качестве аргумента для поля, но, по-видимому, вы не используете его в функции разрешения, поэтому он игнорируется.
Кажется, это причина того, что результат всегда один и тот же, когда вы меняете значение аргумента.
Но странно, когда вы говорите, что это требуется для работы запроса, поскольку он не определен как тип GraphQLNonNull.
Должна быть возможность запрашивать это поле без передачи аргументов в соответствии со схемой, которую вы нам передали.
Да, ты прав. Не удалось, потому что я заключил его в круглые скобки, это работает, как ожидалось: металл {silver_bid_usd_toz}
О, в этом есть смысл. Просто взглянув на него, я не заметил ошибки. Приятно знать, что вы заметили проблему. ;)
Что именно происходит, когда вы отправляете запрос без аргументов?