我为自己和其他人回答这个问题,因为我发现AWS、V3文档和示例非常烦人和误导。官方的SDK文档没有提供显示封送输出的示例,因此您可以在响应中看到一堆对象类型。默认情况下,Doc客户端将删除这些内容,但它们并没有向您展示如何删除这些内容。我发布的答案给出了一个封送响应,这意味着它清除了对象类型字符串。
解组响应的一个示例如下所示,请注意字符串的S作为值类型。
[
{
project_name: { S: 'fake project' },
service_now_request_id: { S: 'CHG000212312' },
service_now_request_url: {
S: 'https://service-now.com/sampleApp?id=snx&spa=1&m=changes&r=0d12121aa442f33c8e0ebb3555'
}
}
]如果您希望得到如下响应,则应该使用完整的DDB文档客户端:
[
{
project_name: 'fake project',
service_now_request_id: 'CHG000212312',
service_now_request_url: 'https://service-now.com/sampleApp?id=snx&spa=1&m=changes&r=0d12121aa442f33c8e0ebb3555',
}
]发布于 2022-03-13 06:22:35
这里是我的示例代码,如果您愿意的话,可以随意挑选或发布完整的ES6版本。
const {DynamoDB} = require("@aws-sdk/client-dynamodb");
const { DynamoDBDocument } = require('@aws-sdk/lib-dynamodb');
const client = new DynamoDB({region: "us-west-2",});
const ddbDocClient = DynamoDBDocument.from(client);
async function marshaledScanOutput() {
const primaryDynamoDBTableName = "yourDDBTableName";
ddbParams = {TableName: primaryDynamoDBTableName};
try {
let testScan = await ddbDocClient.scan(ddbParams);
let result = [];
do {
testScan.Items.forEach((item) => result.push(item));
ddbParams.ExclusiveStartKey = testScan.LastEvaluatedKey;
} while (typeof testScan.LastEvaluatedKey != "undefined");
console.log(result);
// Example output:
// [
// {
// project_name: 'fake project',
// service_now_request_id: 'CHG000212312',
// service_now_request_url: 'https://service-now.com/sampleApp?id=snx&spa=1&m=changes&r=0d12121aa442f33c8e0ebb3555',
// }
// ]
}
catch(error) {
throw error;
}
}
marshaledScanOutput();https://stackoverflow.com/questions/71454351
复制相似问题