EXCEED_MAX_RESPONSE_SIZE
错误原因
响应大小超过最大响应 1MB 限制。
解决方案
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
};
};