如何在aws-sdk-js-v3中使用@aws-sdk/lib-dynamodb的unmarshallOutput函数?
如何在DynamoDB扫描代码中使用unmarshallOutput函数?
操作步骤:
- 导入工具函数:从
@aws-sdk/lib-dynamodb包中导入unmarshallOutput,若未安装该包,先执行npm install @aws-sdk/lib-dynamodb。 - 处理扫描结果:获取DynamoDB原生响应后,用
unmarshallOutput处理整个响应对象,它会自动把Items中的DynamoDB特殊格式(如{ S: "text" })转换为普通JavaScript对象。
修改后的完整代码:
import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb"; // 导入unmarshallOutput函数 import { unmarshallOutput } from "@aws-sdk/lib-dynamodb"; const client = new DynamoDBClient({ region: "us-east-1" }); export async function handler(event, context, callback) { const params = { TableName: "Amenities" }; try { const command = new ScanCommand(params); const rawData = await client.send(command); // 处理原生响应,转换为普通JS对象 const processedData = unmarshallOutput(rawData); // 返回转换后的结果数组 return processedData.Items; } catch (err) { return { statusCode: 500, body: JSON.stringify({ message: "Error retrieving data from DynamoDB", error: err.message // 可选:补充错误信息方便排查 }) }; } }
关键说明:
unmarshallOutput是AWS SDK v3的专属工具,能直接处理ScanCommand、GetCommand等命令的输出,省去手动逐个转换Item的麻烦。- 若仅需转换单个Item,可使用
@aws-sdk/util-dynamodb中的unmarshall函数,但unmarshallOutput处理整个响应的效率更高、写法更简洁。
内容的提问来源于stack exchange,提问作者jdiablo
相关产品推荐
相关产品推荐

