【问题标题】:Sending dynamic number of mutations at once一次发送动态数量的突变
【发布时间】:2022-01-13 12:54:09
【问题描述】:

是否有一种标准方法可以在 Apollo 客户端的同一请求中发送动态数量的突变?

我必须处理一个只公开一个删除突变的 Graphql API,我想用多个 id 来调用它。以下是它的定义:

mutation DeleteItemById($id: Int) {
    delete_item(id: $id) {
        id
    }
}

根据我的阅读,我可以做类似的事情

mutation DeleteItemById($id_1: Int, $id_2: Int) {
    delete_item_1: delete_item(id: $id_1) {
        id
    }
    delete_item_2: delete_item(id: $id_2) {
        id
    }
}

但是我怎样才能动态生成这样的查询呢?无论如何,这是一个好习惯吗?我一直认为动态生成 graphql 查询不是一个好主意。

另外,我正在使用 graphql-codegen 并在 .graphql 文件中静态定义查询,所以我想它在解析动态查询时会遇到问题。

【问题讨论】:

    标签: graphql apollo apollo-client graphql-codegen


    【解决方案1】:

    一般来说,动态生成 GraphQL 查询是个坏主意。解决这个问题的一个好方法是创建一个支持多个 id 的新突变,在同一批次中验证和删除所有,例如:

    type Mutation {
      deleteItems(ids: [String!]!): Boolean!
    }
    

    【讨论】:

    • 感谢您的回答,这也是我在 GraphQL 体验中所熟悉的。话虽如此,在我目前的项目中,我对 API 方面的影响不大。长话短说,GraphQL API 是从 Django 模型自动生成的,提供了一些 CRUD 功能,并且后端团队坚持在一个请求中发送多个突变的标准方面。
    猜你喜欢
    • 2017-09-26
    • 1970-01-01
    • 2014-04-16
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多