在放大graphql中添加多对多连接

use*_*468 3 many-to-many graphql aws-amplify

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

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")
}
Run Code Online (Sandbox Code Playgroud)

谢谢 !

Eng*_*gam 7

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

我没有从你的例子中完全理解你想要的结果,所以我会尝试用一个替代例子来解释:

假设您有一个系统,其中多个用户可以是一个文档的创建者,一个用户也可以是多个文档的创建者之一。为此,您必须创建三个 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")
}
Run Code Online (Sandbox Code Playgroud)

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

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

我希望这会帮助你走向正确的前进道路。