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

Node.js如何发送带JSON请求体的PATCH请求操作Atlas集群

Node.js 实现MongoDB Atlas API暂停集群操作

核心注意事项

  • MongoDB Atlas v2 API 强制要求Digest认证,不支持普通的Basic Auth,不要自行手写Digest签名逻辑,直接使用成熟的带Digest认证支持的HTTP客户端即可避免90%的认证报错
  • 调用修改集群接口必须携带指定版本的Accept头,否则会直接返回406错误
  • paused字段需传入布尔值,true触发暂停,false触发恢复,不要传字符串类型的"true"
  • 用于调用的API密钥需要绑定对应项目的Cluster Manager权限,同时把运行脚本的机器出口IP加入密钥的IP白名单
  • 仅M10及以上规格的付费集群支持通过API暂停,M0免费集群不支持该操作

可直接运行的实现代码

首先安装依赖:

npm install axios @mhoc/axios-digest-auth

脚本代码:

const axios = require('axios');
const DigestAuth = require('@mhoc/axios-digest-auth').default;

// 替换为你自己的账号信息
const AUTH_CONFIG = {
  publicKey: "替换为你的Atlas API公钥",
  privateKey: "替换为你的Atlas API私钥",
  groupId: "替换为集群所属的项目ID(Group ID)",
  clusterName: "替换为要操作的集群名称",
  apiEndpoint: "https://cloud.mongodb.com"
};

const digestClient = new DigestAuth({
  username: AUTH_CONFIG.publicKey,
  password: AUTH_CONFIG.privateKey
});

async function setClusterPausedStatus(isPaused) {
  try {
    const response = await digestClient.request({
      method: "PATCH",
      url: `${AUTH_CONFIG.apiEndpoint}/api/atlas/v2/groups/${AUTH_CONFIG.groupId}/clusters/${AUTH_CONFIG.clusterName}`,
      headers: {
        "Content-Type": "application/json",
        // 注意这个版本头不能漏,指定使用2023-02-01版本的API
        "Accept": "application/vnd.atlas.2023-02-01+json"
      },
      data: {
        paused: isPaused
      }
    });
    console.log("请求提交成功,集群当前状态:", response.data.stateName);
    // 集群状态变更是异步操作,如需等待操作完成可轮询该GET接口判断paused字段值
    return response.data;
  } catch (error) {
    console.error("请求失败,错误信息:", error.response?.data || error.message);
    throw error;
  }
}

// 调用示例:暂停集群
setClusterPausedStatus(true);
// 如需恢复集群,传false即可
// setClusterPausedStatus(false);

常见报错排查

  • 返回401:优先检查公钥、私钥是否复制正确,有没有多余空格,确认使用的是Digest认证而非Basic Auth
  • 返回403:检查API密钥权限是否足够,当前IP是否加入密钥白名单
  • 返回404:检查项目ID、集群名称是否拼写正确,接口路径是否漏写
  • 返回406:检查是否携带了要求的版本号Accept头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:48:18