2017-10-11 145 views
0

在我的apollo项目中,当用户创建一个项目时,它应该自动创建与之关联的第一个文件夹。使用Graphql添加项目时创建关系

我的模式是这样的:

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

您可以在此情况下,使用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 
    } 
    } 
} 

注意,参数被分别称为foldersproject