【问题标题】:Create Relationship when Adding Item with Graphql使用 Graphql 添加项目时创建关系
【发布时间】:2018-03-23 08:14:13
【问题描述】:

在我的 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
  }
}

正确的做法是什么?

【问题讨论】:

    标签: graphql graphql-js apollo apollo-client graphcool


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-27
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 2017-07-18
      • 1970-01-01
      相关资源
      最近更新 更多