AWS-CDK Appsync Codefirst 输入类型

Posted

技术标签:

【中文标题】AWS-CDK Appsync Codefirst 输入类型【英文标题】:AWS-CDK Appsync Codefirst input types 【发布时间】:2021-05-08 19:40:02 【问题描述】:

为了避免数据结构的重复,我想在这样的输入类型上重用类型定义

export const DeviceStatus = new ObjectType('DeviceStatus', 
    definition: 
        time: timestamp,
        firmwareVersion: string
    ,
);

export const DeviceStatusInput = new InputType('DeviceStatusInput', 
    definition: 
        tenantId: id_required,
        deviceId: id_required,
        // Reuse of DeviceStatus Field definition
        status: DeviceStatus.attribute()
    
);

没有错误,因为DeviceStatus.attribute() 的返回类型很好,这适用于ObjectType 继承。

从我的角度来看,这应该可行,但是部署会导致令人讨厌的“创建架构的内部错误”错误。

当然,我可以将整个定义移动到一个对象中并重用它,但这似乎很奇怪。对于 CodeFirst 方法,有什么好的解决方案

【问题讨论】:

【参考方案1】:

input type 中引用object type 似乎无效。

推荐查看Can you make a graphql type both an input and output type?

你能做的最好的可能是创建一些方便的方法,从单一定义中创建对象和输入类型。

【讨论】:

即使与 aws-cdk 没有直接关系的难度也可能是正确的答案(链接中采用的方法)。但在这种情况下,如果 typescript API 确实拒绝那里的类型会很有帮助

以上是关于AWS-CDK Appsync Codefirst 输入类型的主要内容,如果未能解决你的问题,请参考以下文章

如果我不使用放大,如何从 AppSync GraphQL 架构生成 Typescript 定义?

如何使用 aws-cdk 从 AWS Secrets Manager 导入 EKS 密钥?

AWS-CDK 基础初始化

AWS-CDK 基础初始化

在 aws-cdk 上的 aws-rds 上,使数据库可公开访问的设置在哪里?

如何在 TypeScript 中使用 aws-cdk 在每次部署时不重建 DockerImageAsset?