Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何正确解析和键入graphql结果?_Json_Typescript_Graphql - Fatal编程技术网

Json 如何正确解析和键入graphql结果?

Json 如何正确解析和键入graphql结果?,json,typescript,graphql,Json,Typescript,Graphql,问:当响应中的一个父键将不断更改时,如何以通用方式解析和键入服务器响应 作为前言:我对TS和解析服务器响应仍然是新手——所以这可能是显而易见的——但一天后我还没有找到一个好的解决方案 背景:我正在使用Typescript和AWS放大。我有一个叫做CreateGroup的graphql变异。它需要代码生成类型CreateGroupInput的输入,定义如下: export type CreateGroupInput = { id?: string | null, name: string,

问:当响应中的一个父键将不断更改时,如何以通用方式解析和键入服务器响应

作为前言:我对TS和解析服务器响应仍然是新手——所以这可能是显而易见的——但一天后我还没有找到一个好的解决方案

背景:我正在使用Typescript和AWS放大。我有一个叫做CreateGroup的graphql变异。它需要代码生成类型CreateGroupInput的输入,定义如下:

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]

这并不理想,但比其他选择要好得多