Json 如何正确解析和键入graphql结果?
问:当响应中的一个父键将不断更改时,如何以通用方式解析和键入服务器响应 作为前言:我对TS和解析服务器响应仍然是新手——所以这可能是显而易见的——但一天后我还没有找到一个好的解决方案 背景:我正在使用Typescript和AWS放大。我有一个叫做CreateGroup的graphql变异。它需要代码生成类型CreateGroupInput的输入,定义如下:Json 如何正确解析和键入graphql结果?,json,typescript,graphql,Json,Typescript,Graphql,问:当响应中的一个父键将不断更改时,如何以通用方式解析和键入服务器响应 作为前言:我对TS和解析服务器响应仍然是新手——所以这可能是显而易见的——但一天后我还没有找到一个好的解决方案 背景:我正在使用Typescript和AWS放大。我有一个叫做CreateGroup的graphql变异。它需要代码生成类型CreateGroupInput的输入,定义如下: export type CreateGroupInput = { id?: string | null, name: string,
export type CreateGroupInput = {
id?: string | null,
name: string,
createdAt?: string | null,
updatedAt?: string | null,
};
//I'm using this as input to create a new db entry
const groupInfo: CreateGroupInput = {
name: "new group",
createdAt: time,
updatedAt: time
};
我想解析并键入变异的结果,这样我就可以访问在变异过程中创建的id。理想情况下,这就是我想要做的:
const data = API.graphql(graphqlOperation(mutations.createGroup, {input: groupInfo}) as CreateGroupInput;
并使数据变量的类型为CreateGroupInput,且服务器响应都位于正确的位置。但是,我得到的结果不能很好地解析,因为结构有点不同:
{
"data": {
"createGroup": {
"id": "1d720f68-56bd-46a9-82ef-e060a5b07177",
"name": "new group",
"createdAt": "1580278766358",
"updatedAt": "1580278766358"
}
}
}
我尝试了JSON.Parse和JSON.stringify的不同组合,但它们都不起作用,老实说,我觉得我做了一些非常错误的事情。这个函数最终将处理许多不同的突变——我希望响应中的名称“createGroup”会对其中的每一个进行更改——因此我也不能仅仅解析“result.data.createGroup”
这让我提出了这个问题。当响应中的键“createGroup”将不断更改时,如何以通用方式解析和键入服务器响应?我发现结果也可以通过键访问(回想起来,这应该是显而易见的),键允许我使用变量 我向函数“queryName”添加了一个额外的输入,然后使用
result.data[queryName]
这并不理想,但比其他选择要好得多