对于 AWS amplify 中的模式,graphql 中的数组和映射是不是有标量类型?

Posted

技术标签:

【中文标题】对于 AWS amplify 中的模式,graphql 中的数组和映射是不是有标量类型?【英文标题】:Is there a scalar type for arrays and maps in graphql for schemas in AWS amplify?对于 AWS amplify 中的模式,graphql 中的数组和映射是否有标量类型? 【发布时间】:2020-10-31 01:34:22 【问题描述】:

我正在学习将 AWS amplify 与 React 结合使用,它使用的 API 是一个利用 AWS AppSync 的 GraphQL API。我对 graphQL 很陌生,我的架构目前是这样的。这是放大应用程序内部的架构:

type Note @model 
  id: ID!
  name: String!
  description: String
  title: String
  image: String

举个例子,我想在 Note 类型的组件中存储一个对象数组,如下所示:

代码 1

type Note @model 
  id: ID!
  name: String!
  description: String
  title: String
  image: String
  components: []

但是阅读文档后我知道没有任何数组标量类型。我知道我可以创建另一个表并这样做:

代码 2

 type Note @model 
  id: ID!
  name: String!
  description: String
  title: String
  image: String
  components: [elements!]!

 
 type elements @model 
  id: ID!
  item: String!

但我不希望这样,因为它会创建一个新表。我只想要一个包含 id、名称、描述、标题、图像和一个组件数组的表,您可以在其中存储对象,如上面 Code-1 中所示。有没有办法做到这一点?还有“@modal”在架构中的作用是什么?

【问题讨论】:

"自定义 JSON 标量" - 检查通用 graphql 并放大文档 @xadm 非常感谢。发现可以使用“AWSJSON”,我想我的错误是查看 graphql 文档而不是 AWS 文档。 【参考方案1】:

查看了 AWS 文档,发现我可以将 AWSJSON 用于 [1, 2, 3] 之类的列表/数组和 "upvotes": 10 之类的地图,所以现在我的架构是:

type Note @model 
  id: ID!
  name: String!
  description: String
  title: String
  image: String
  components: AWSJSON

这里是了解更多信息的链接AWS Scalar Types

【讨论】:

以上是关于对于 AWS amplify 中的模式,graphql 中的数组和映射是不是有标量类型?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify SPA React + Cognito(已启用 Microsoft Azure Ad Enterprise SSO)+ Microsoft Graph API

aws amplify appsync 中的 Graphql 突变错误

在 AWS Amplify GraphQL 中对结果进行排序而不进行过滤

AWS Amplify 和 Vue 路由器历史模式

如何在 GraphQL/AWS Amplify 的前端启用 CORS 模式?

如何将 AWS Amplify 控制台中的现有应用程序与 AWS Amplify CLI 连接?