使用 Graphql 添加项目时创建关系
Create Relationship when Adding Item with Graphql
在我的 apollo 项目中,当用户创建项目时,它应该自动创建与其关联的第一个文件夹。
我的模式是这样的:
type Project implements Node {
id: ID! @isUnique
createdAt: DateTime!
updatedAt: DateTime!
name: String!
folders: [Folders!]! @relation(name: "ProjectFolders")
}
type Folder implements Node {
id: ID! @isUnique
createdAt: DateTime!
updatedAt: DateTime!
name: String!
project: Project @relation(name: "ProjectFolders")
}
所以这个想法是,当用户创建项目时,它也会创建一个初始文件夹,用户可以稍后添加更多文件夹。天真地,我想做这样的事情:
mutation CreateProjectMutation($name: String!) {
createProject(name: $name) {
id
name
}
createFolder(name: $name, $projectId: ?PROJECT_ID?) {
id
name
}
}
正确的做法是什么?
在这种情况下,您可以使用 nested create mutation,方法是从 createProject
:
开始
mutation CreateProjectMutation($name: String!) {
createProject(
name: $name
folders: [{
name: $name
}]
) {
id
name
folders {
id
}
}
}
或createFolder
:
mutation CreateFolderMutation($name: String!) {
createFolder(
name: $name
project: {
name: $name
}
) {
id
name
project {
id
}
}
}
请注意,该参数分别称为 folders
和 project
。
在我的 apollo 项目中,当用户创建项目时,它应该自动创建与其关联的第一个文件夹。
我的模式是这样的:
type Project implements Node {
id: ID! @isUnique
createdAt: DateTime!
updatedAt: DateTime!
name: String!
folders: [Folders!]! @relation(name: "ProjectFolders")
}
type Folder implements Node {
id: ID! @isUnique
createdAt: DateTime!
updatedAt: DateTime!
name: String!
project: Project @relation(name: "ProjectFolders")
}
所以这个想法是,当用户创建项目时,它也会创建一个初始文件夹,用户可以稍后添加更多文件夹。天真地,我想做这样的事情:
mutation CreateProjectMutation($name: String!) {
createProject(name: $name) {
id
name
}
createFolder(name: $name, $projectId: ?PROJECT_ID?) {
id
name
}
}
正确的做法是什么?
在这种情况下,您可以使用 nested create mutation,方法是从 createProject
:
mutation CreateProjectMutation($name: String!) {
createProject(
name: $name
folders: [{
name: $name
}]
) {
id
name
folders {
id
}
}
}
或createFolder
:
mutation CreateFolderMutation($name: String!) {
createFolder(
name: $name
project: {
name: $name
}
) {
id
name
project {
id
}
}
}
请注意,该参数分别称为 folders
和 project
。