在Nodejs中以GraphQLtypes分配JSON

我打电话给一个报告API与NodeJs,这给了我一个JSON响应。 可以使用不同的ID来调用API(在这种情况下,不同的报告ID)。 例如:

https://report.domain.io/report/1 https://report.domain.io/report/2 

等等。 由于id在不同的时间是不同的,它会给我不同的回应。 属性/名称将会不同。 所以我无法将其映射到GraphQLObjectType中。 例如,如果JSON响应如下:

 [ { "modelbrand": "Sony", "modelcode": "F3111", "avg_free_storage": 225401514 }, { "modelbrand": "Sony", "modelcode": "F3111", "avg_free_storage": 224547840 } ] 

然后我可以用GraphQL来映射它,如下所示:

 Report() { return new graphql.GraphQLObjectType({ name: "Report", description: "This represents report", fields: () => ({ "modelbrand": {type: graphql.GraphQLString}, "modelcode": {type: graphql.GraphQLString}, "avg_free_storage": {type: graphql.GraphQLString} }) }); } 

因为我知道属性是固定的。 但是,如果属性/名称像modelbrand,modelcode更改为其他(显然它将是不同的报告),那么我不能映射它在GraphQLObjectType。 在这种情况下,我需要另一个types(应该是JSONtypes)来映射这些响应。 不幸的是,它不可用作GraphQL的基本types。 我没有find任何自定义/标量types或节点库来解决这个问题。 有堆栈溢出的解决scheme,但似乎不工作。

我能为此获得解决scheme吗? 一个Nodejs的例子将不胜感激。 谢谢。

请参考这个graphql-type-json 。 这可以用作自定义标量jsontypes。

在模式文件中

 scalar JSON type User { id: ID! userDetails: JSON } type Query { getUser(id: ID!): User }