如何使用GraphQL删除多个项目?

时间:2017-02-09 06:22:10

标签: datatables graphql mutation

我是GraphQL的新手。 如何在GraphQL中编写删除突变以删除多个项目(多个ID)? 我用scaphold.io。

2 个答案:

答案 0 :(得分:12)

您可以使用 GraphQL别名将同一请求中的多个突变批处理到GraphQL服务器。

假设这是删除一个项目的方式:

mutation deleteOne {
  deleteItem(id: "id1") {
    id
  }
}

然后,您可以在一个请求中删除多个项目:

mutation deleteMultiple {
  id1: deleteItem(id: "id1") {
    id
  }
  id2: deleteItem(id: "id2") {
    id
  }
  # ... and so on
  id100: deleteItem(id: "id100") {
    id
  }
}

知道一个请求中的多个突变按顺序运行(从上到下)是有帮助的。您也可以在同一个请求中以相同的方式运行多个查询,并且在一个请求中的多个查询在parellel中运行

如果你想运行1000个突变,最好将它们分成10组,每组100个。

可以在此FAQ article以及官方GraphQL docs中找到更多信息和其他示例。

答案 1 :(得分:2)

我认为好的解决方案是创建一个接受例如数组的方法(变异)。 ID,用于批量删除数据库中的多条记录。

mutation deleteUsers($userIds: [Int!]!) {
    deleteUsers(userIds: $userIds) {
    ...
    }
}

然后,在解析器中,您可以使用userIds参数来执行DELETE FROM users WHERE id IN userIds之类的SQL查询,其中userIds当然应该被正确替换(转义),具体取决于您的方式与数据库交互。