You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Typescript GraphQL Mutation 如何遍历对象数组执行批量更新

首先修正现有代码的问题

你当前定义的updateUser函数内部又调用了同名的updateUser方法,会导致无限递归报错,优先给GraphQL生成的Mutation方法改个不冲突的名字,比如改成updateUserMutation。


方案1:并行批量执行(无接口频率限制时优先用,速度快)

所有更新请求同时发出,等待全部执行完成:

// 你的用户数组
const userList = [/* 你的用户对象数组 */]

// 修正命名后的单用户更新方法
async function updateSingleUser(user: ValuesType['user']) {
  await updateUserMutation({
    variables: {
      id: user.id,
      status: "inactive",
    },
  });
}

// 批量调用
async function batchUpdate() {
  try {
    await Promise.all(userList.map(user => updateSingleUser(user)))
    console.log('全部用户更新成功')
  } catch (err) {
    console.error('更新出错:', err)
  }
}

这种方案默认单个请求失败会直接抛出异常,你可以根据需求给单个请求加catch处理失败逻辑,避免单个失败影响其他请求。


方案2:串行顺序执行(有频率限制时用)

逐个执行更新请求,前一个完成再发下一个:

async function batchUpdateSerial() {
  try {
    for (const user of userList) {
      await updateSingleUser(user)
    }
    console.log('全部用户更新成功')
  } catch (err) {
    console.error('更新出错,已停止后续请求:', err)
  }
}

优化建议

如果你的GraphQL服务端支持,更推荐写一个批量更新的Mutation,一次性传入所有需要更新的用户ID数组,服务端统一处理,能大幅减少网络请求开销,性能远高于循环调用单用户更新接口。

内容的提问来源于stack exchange,提问作者axelhaar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:06:00