reknirt
reknirt

Reputation: 2254

When querying for a GraphQL float, what does the second argument represent?

I am making the following query in GraphQL:

{
  metal(silver_bid_usd_toz: 1) {
    silver_bid_usd_toz
  }
}

which returns

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

The JSON object returned by the API is flat:

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

I don't understand what the int 1 in my graphql query means metal(silver_bid_usd_toz: 1)

It doesn't matter what I change it to, it could be 1 or 355, but it is required for the query to work. Why cant I just do

{
  metal(silver_bid_usd_toz) {
    silver_bid_usd_toz
  }
}

My schema looks like this:

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

Upvotes: 1

Views: 788

Answers (1)

luislhl
luislhl

Reputation: 1506

You are passing silver_bid_usd_toz as an argument for the field, but apparently you are not using it in the resolve function, so it's being ignored.

It seems to be the reason why the result is always the same when you change the argument value.

But it is weird when you say that it is required for the query to work, since it is not defined as a GraphQLNonNull type. It should be possible to query this field without passing any argument, according to the Schema you passed us.

Upvotes: 1

Related Questions