1

我在 GraphQL 中进行以下查询:

{
  metal(silver_bid_usd_toz: 1) {
    silver_bid_usd_toz
  }
}

返回

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

API 返回的 JSON 对象是平面的:

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

我不明白1我的 graphql 查询中的 int 是什么意思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())
      }
    })
  })
});
4

1 回答 1

1

silver_bid_usd_toz作为该字段的参数传递,但显然您没有在解析函数中使用它,因此它被忽略了。

这似乎是更改参数值时结果始终相同的原因。

但是当您说查询需要它才能工作时,这很奇怪,因为它没有被定义为一种GraphQLNonNull类型。根据您传递给我们的模式,应该可以在不传递任何参数的情况下查询该字段。

于 2018-06-01T02:05:58.587 回答