Создать связь при добавлении элемента с помощью 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
}
}
Как правильно это сделать?
1 ответ
Решение
В этом случае вы можете использовать вложенную мутацию create, начав с 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
соответственно.