将对象存储到数组中而不在 AWS AppSync 架构中创建新的 table
Store objects into array without creating a new table in AWS AppSync schema
我将 AWS amplify 与 React 结合使用,而 GraphQL API.that 利用 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: []
}
我知道我可以创建一个新的 table 并执行此操作:
type Note @model {
id: ID!
name: String!
title: String
movie: String
components: [elements!]!
}
type elements @model {
id: ID!
item: String!
}
但是,我不想创建新的 table。有什么可行的方法吗?
我在我们的平台上看到了类似的问题,他们建议使用 AWSJSON AWS Scalar Types
但是没有实际的资源可以使用它们。如果那是解决方案,请帮助我完成这些程序,我们如何为他们编写突变。
听起来您确实想要一个新的 elements
类型在您的架构中,但您应该配置解析器以使其指向任何 table 中的类似数组的列 Note
的解析器指向。请记住,graphQL 模式中的类型不一定需要与数据源中的内容一一对应。您的数据库结构是什么样的?
我找到了解决方案:
通过使用 AWSJSON,我们无需在 DynamoDBtable 中创建新的 table 即可创建带映射的数组
重现过程:
First Add the AWSJSON to the Schema Graphql like below,
type Note @model {
id: ID!
name: String!
title: String
movie: String
components: AWSJSON
}
While using create mutation, Pass the data in JSON format
示例:
let input = `[{\"isPending\":false,\"isAccepted\":false}]`
While using update mutation there was an issue with AWSJSON which will not update the map existing instead, it will create a new map in the Array.
此问题的解决方案是使用 _version
我将 AWS amplify 与 React 结合使用,而 GraphQL API.that 利用 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: []
}
我知道我可以创建一个新的 table 并执行此操作:
type Note @model {
id: ID!
name: String!
title: String
movie: String
components: [elements!]!
}
type elements @model {
id: ID!
item: String!
}
但是,我不想创建新的 table。有什么可行的方法吗?
我在我们的平台上看到了类似的问题,他们建议使用 AWSJSON AWS Scalar Types
但是没有实际的资源可以使用它们。如果那是解决方案,请帮助我完成这些程序,我们如何为他们编写突变。
听起来您确实想要一个新的 elements
类型在您的架构中,但您应该配置解析器以使其指向任何 table 中的类似数组的列 Note
的解析器指向。请记住,graphQL 模式中的类型不一定需要与数据源中的内容一一对应。您的数据库结构是什么样的?
我找到了解决方案:
通过使用 AWSJSON,我们无需在 DynamoDBtable 中创建新的 table 即可创建带映射的数组
重现过程:
First Add the AWSJSON to the Schema Graphql like below,
type Note @model {
id: ID!
name: String!
title: String
movie: String
components: AWSJSON
}
While using create mutation, Pass the data in JSON format
示例:
let input = `[{\"isPending\":false,\"isAccepted\":false}]`
While using update mutation there was an issue with AWSJSON which will not update the map existing instead, it will create a new map in the Array.
此问题的解决方案是使用 _version