【问题标题】:Add many to many connection in amplify graphql在放大graphql中添加多对多连接
【发布时间】:2020-10-26 09:07:39
【问题描述】:

我有一个耗时的问题,不知道我可以测试更多。 这是有效的,但我需要在招聘人员中定位一个数组。但是后来我有一个多对多的连接,并且没有任何工作了。有什么好办法解决吗? 这是我的代码:

type Position @model @auth(rules: []) {
  id: ID!
  title: String!
  candidates: [Candidate]! @connection(name: "PositionCandidates")
  interestedRecruiters: [Recruiter]! @connection(name: "PositionRecruiter")
}
type Candidate @model @auth(rules: []) {
  id: ID!
  firstname: String!
  lastname: String!
  email: AWSEmail!
  birthday: AWSDate!
  position: Position! @connection(name: "PositionCandidates")
}
type Recruiter @model @auth(rules: []) {
  id: ID!
  firstname: String!
  lastname: String!
  email: AWSEmail!
  birthday: AWSDate!
  positions: Position! @connection(name: "PositionRecruiter")
}

谢谢!

【问题讨论】:

    标签: graphql many-to-many aws-amplify


    【解决方案1】:

    要通过放大/应用同步处理多对多连接,您必须创建一个“加入”表(类型)。您可以将连接表视为存储连接的表。

    我没有从你的例子中完全理解你想要的结果是什么,所以我将尝试用另一个例子来解释:

    假设您有一个系统,其中多个用户可以是一个文档的创建者,并且一个用户也可以是多个文档的创建者之一。为此,您必须创建三个 dynamoDb 表(或三种类型是架构)。

    type User @model {
      id: ID!
      name: String
      documents: [UserDocument] @connection(name: "UserDocumentConnection")
    }
    
    type Document @model {
       id: ID!
       title: String
       content: String
       users: [UserDocument] @connection(name: "DocumentUserConnection")
    }
    
    type UserDocument @model {
       id: ID!
       user: User @connection(name: "UserDocumentConnection")
       document: Document @connection(name: "DocumentUserConnection")
    }
    

    然后你有一个包含所有用户的表,一个包含所有文档的表,以及一个包含用户和文档之间的所有连接的表。

    假设您有一个正在创建新文档的用户。然后你首先创建文档,然后当它被创建并且你从 appsync 收到带有文档新 id 的文档时,你必须在 UserDocument 表中创建一个新对象,其中包含用户的 id 和 id的文件。然后,您还可以通过向 UserDocument 表添加更多项目来在文档中添加更多用户。

    我希望这将帮助您走上正确的前进道路。

    【讨论】:

    • 您有解决方案来为上述架构添加放大身份验证保护吗?我已经为此工作了一段时间,但似乎无法弄清楚,相反,我正在使用自定义角色的对象,但它很脏,我不太在意。
    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 2019-07-08
    • 2022-11-13
    • 2011-05-28
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多