我是GraphQL的新手。 如何在GraphQL中编写删除突变以删除多个项目(多个ID)? 我用scaphold.io。
答案 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
当然应该被正确替换(转义),具体取决于您的方式与数据库交互。