gpt4 book ai didi

javascript - 在 Nodejs 中以 GraphQL 类型分配 JSON

转载 作者:行者123 更新时间:2023-11-29 21:00:12 24 4
gpt4 key购买 nike

我正在使用 Nodejs 调用报告 API,它会给我一个 JSON 响应。可以使用不同的 ID(在本例中为不同的报告 ID)调用 api。例如:

  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 中。在这种情况下,我需要另一种类型(应该是 JSON 类型)来映射这些响应。不幸的是,它不能作为 GraphQL 的原始类型使用。我没有找到任何自定义/标量类型或 Node 库来解决这个问题。 stack overflow中有解决方案但似乎不起作用。

我能得到一个解决方案吗?一个 Nodejs 示例将不胜感激。谢谢。

最佳答案

请引用这个graphql-type-json .这可以用作自定义标量 json 类型。

在架构文件中

scalar JSON

type User {
id: ID!
userDetails: JSON
}

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

在解析器文件中

import GraphQLJSON from 'graphql-type-json';
import {User} from './connectors';

const resolvers = {

Query: getUser(_, args) {
return User.find({
where: args
});
},

JSON: {
__serialize(value) {
return GraphQLJSON.parseValue(value);
}
}
}

这可能对你有帮助

关于javascript - 在 Nodejs 中以 GraphQL 类型分配 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46926893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com