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

Node.js中如何从Lambda函数回调返回值中提取Body?

如何从Lambda调用的返回结果中提取Body内容

看起来你已经离解决问题很近了!现在的问题是你解析完Payload后,还需要再深入一层提取Body字段,而且如果你的返回内容是PDF这类二进制数据,可能还要做base64解码。我来帮你调整代码并解释清楚:

首先,先修正你的代码逻辑,让变量名更清晰,然后一步步提取Body:

const lambdaResponse = await new Promise((resolve, reject) => { 
  lambda.invoke(params, function(err, data) { 
    if (err) { 
      console.log('STACK ERROR IS' + err, err.stack) 
      reject(err); 
    } else { 
      console.log('Returned DATA is: ' + JSON.stringify(data)); 
      resolve(data); 
    } 
  }); 
});

Prescription.deletePrescription(programId);

// 第一步:解析Lambda返回的Payload(它本身是JSON字符串)
const parsedPayload = JSON.parse(lambdaResponse.Payload);

// 第二步:提取Body字段 - 注意这里的大小写要和你的Lambda函数返回的字段一致!
// 如果你的Lambda返回的是小写的`body`,就改成parsedPayload.body
const pdfBodyContent = parsedPayload.Body;

// 第三步:如果你的Lambda返回的是PDF二进制数据(通常会转成base64字符串),解码成Buffer
const pdfBuffer = Buffer.from(pdfBodyContent, 'base64');

// 现在你就可以用pdfBuffer来处理PDF内容了,比如保存到S3或者返回给前端

关键说明:

  • Lambda函数调用返回的data.Payload本质是Lambda函数本身返回内容的JSON字符串,所以你需要先JSON.parse把它转成JS对象。
  • 你的Lambda函数内部应该是返回了包含Body(或body)字段的对象,比如Lambda里的代码可能是这样的:
    // 示例Lambda函数返回逻辑
    exports.handler = async (event) => {
      // 生成PDF的Buffer
      const generatedPdf = await createYourPdf();
      return {
        statusCode: 200,
        Body: generatedPdf.toString('base64'), // 把二进制Buffer转成base64字符串便于传输
        isBase64Encoded: true
      };
    };
    
  • 如果你的Lambda返回的Body是普通JSON数据而不是二进制,那你只需要再做一次JSON.parse(pdfBodyContent)就能拿到实际的数据对象。

最后提醒你,一定要确认Lambda返回的字段名大小写(是Body还是body),这是很容易踩坑的点!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:12:03