如何解决将对象存储到数组中,而无需在 AWS AppSync 架构中创建新表
我将 AWS amplify 与 React 和 GraphQL API 结合使用。它利用了 AWS AppSync。我对 graphQL 很陌生,目前我的架构是这样的。这是放大应用程序中的架构:
type Note @model {
id: ID!
name: String!
title: String
movie: String
}
例如,我想在 Note 类型的组件中存储一个对象数组,如下所示:
type Note @model {
id: ID!
name: String!
title: String
movie: String
components: []
}
我知道我可以创建一个新表并执行此操作:
type Note @model {
id: ID!
name: String!
title: String
movie: String
components: [elements!]!
}
type elements @model {
id: ID!
item: String!
}
但是,我不想创建新表。有没有办法做到这一点?
我在我们的平台上看到了类似的问题,他们建议使用 AWSJSON AWS Scalar Types
但是没有使用它们的实际资源。如果那是解决方案,请帮助我完成程序,我们如何为它们编写突变。
解决方法
听起来您确实希望在架构中使用新的 elements
类型,但是您应该配置解析器,使其指向 Note
的解析器所在的任何表中的类似数组的列指向。请记住,graphQL 模式中的类型不一定需要与数据源中的内容一一对应。您的数据库结构是什么样的?
我找到了解决办法:
通过使用 AWSJSON,我们可以创建带有映射的数组,而无需在 DynamoDB 中创建新表
复制程序:
首先将 AWSJSON 添加到 Schema Graphql 中,如下所示,
type Note @model {
id: ID!
name: String!
title: String
movie: String
components: AWSJSON
}
在使用 create mutation 时,以 JSON 格式传递数据
示例:
let input = `[{\"isPending\":false,\"isAccepted\":false}]`
虽然使用更新突变,但 AWSJSON 存在一个问题,它不会更新现有的地图,而是会在数组中创建一个新地图。
此问题的解决方案是使用 _version
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。