如何使用 schema.graphql 在放大数据存储中创建多对多关系
Posted
技术标签:
【中文标题】如何使用 schema.graphql 在放大数据存储中创建多对多关系【英文标题】:How to create a many to many relationship in amplify datastore using schema.graphql 【发布时间】:2022-01-22 19:59:16 【问题描述】:type StudentCourses
@model(queries: null)
@auth(rules: [ allow: public ])
@key(name: "byStudent", fields: ["studentID", "courseID"])
@key(name: "byCourse", fields: ["courseID", "studentID"])
id: ID!
studentID: ID!
courseID: ID!
student: Student! @connection(fields: ["studentID"])
course: Course! @connection(fields: ["courseID"])
type Course
@model
@auth(rules: [ allow: public ])
@key(name: "bySchool", fields: ["schoolID"])
id: ID!
courseName: String!
schoolID: ID!
students: [Student!] @connection(keyName: "byCourse", fields: ["id"])
type Student
@model
@auth(rules: [ allow: public ])
@key(name: "bySchool", fields: ["schoolID"])
id: ID!
studentName: String
studentEmail: String
sisID: Int
schoolID: ID!
courses: [Course!] @connection(keyName: "byStudent", fields: ["id"])
我按照docs 中的步骤在学生和课程之间创建了多对多关系,但我不断收到此错误Key byCourse 不存在模型学生 即使我认为我创建了一个模型连接学校和课程。提前致谢
【问题讨论】:
【参考方案1】:你需要从Course
中省略keyName
,因为在Student
模型中,你有课程列表,所以你不能真的有@key
指令。
https://docs.amplify.aws/cli-legacy/graphql-transformer/connection/#many-to-many-connections
type Course
@model
@auth(rules: [ allow: public ])
@key(name: "bySchool", fields: ["schoolID"])
id: ID!
courseName: String!
schoolID: ID!
students: [Student!] @connection(fields: ["id"])
【讨论】:
我们如何对新的 Transformer v2 做同样的事情?我已将其全部设置为:以上是关于如何使用 schema.graphql 在放大数据存储中创建多对多关系的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apollo Server 时如何生成 schema.graphql 文件?
如何在不使用公用文件夹和 php artisan 的情况下在 laravel graphql-playground 中加载 schema.graphql
如何使用 apollo 客户端从 schema.graphql 中提取 typescript 接口:codegen
如何在部署前从@aws-cdk/aws-appsync 检索 schema.graphql 文件