EXCEED_MAX_RESPONSE_SIZE
遇到错误?使用 AI 工具协助排查
错误原因
响应大小超过最大响应限制,云开发相关 API 响应限制为:
- 小程序链路的最大响应包体为 1 MB
- 云函数的最大响应包体为 6MB
- 文档型数据库查询最大响应包体为 50 MB
解决方案
1. 使用分页查询
对于大量数据,应该使用分页方式分批获取:
// 数据库查询分页示例
const pageSize = 100;
const page = 1;
const result = await db
.collection("users")
.skip((page - 1) * pageSize)
.limit(pageSize)
.get();
2. 精简返回字段
只返回必要的字段,避免返回整个文档:
// 只选择需要的字段
const result = await db
.collection("users")
.field({
name: true,
email: true,
avatar: true,
// 不返回大字段如 description、content 等
})
.get();
3. 使用云存储传输大数据
对于超大数据(如导出功能),建议先将数据写入云存储,然后返回下载链接:
import cloudbase from "@cloudbase/node-sdk";
const app = cloudbase.init({
env: "your-env-id", // 替换为您的环境id
region: "ap-shanghai", // 不传默认为上海地域
});
exports.main = async (event, context) => {
// 生成大量数据
const largeData = await generateLargeData();
// 上传到云存储
const fileName = `export_${Date.now()}.json`;
await app.uploadFile({
cloudPath: `exports/${fileName}`,
fileContent: JSON.stringify(largeData),
});
// 获取临时下载链接
const result = await cloud.getTempFileURL({
fileList: [`exports/${fileName}`],
});
// 返回下载链接
return {
downloadUrl: result.fileList[0].tempFileURL,
};
};