在使用AppSync时,如果数组属性具有与之关联的@key指令,无法直接在模式中创建具有数组的类型。这是由于AWS AppSync中的关键字转换规则和数据类型定义的限制引起的。
解决方法是通过使用两个模式(type),一个用于数组的类型定义,另一个用于关联@key指令的类型定义。
以下是一个示例代码,演示如何解决这个问题:
type User {
id: ID!
name: String!
posts: [Post] @key(name: "byUser", fields: ["id"])
}
type Post {
id: ID!
title: String!
content: String!
user: User @key(name: "byUser", fields: ["id"])
}
type Query {
getUser(id: ID!): User
}
在上面的示例代码中,我们定义了两个类型:User 和 Post。User 类型具有一个名为 posts 的数组属性,它具有与之关联的 @key 指令。这意味着我们无法直接在 User 类型中定义数组的类型。
为了解决这个问题,我们将 Post 类型定义为一个单独的类型,然后在 User 类型中使用 User 类型的数组属性。
这样,我们就能够定义一个具有数组的类型,并且能够正确地使用与之关联的 @key 指令。
希望这个解决方法能帮助到你!