在 Typescript 和 AWS Lambda 中将 DynamoDB 数据格式化为正常 JSON
Formatting DynamoDB data to normal JSON in Typescript and AWS Lambda
我正在使用查询从 DynamoDB 检索数据,我得到以下返回:
[{"serviceUserId":{"S":"123456789"},"createdDate":{"S":"11-12-2021"}}]
DynamoDB JSON 格式具有我试图通过转换为正常 JSON 格式来摆脱的类型。我尝试使用 AWS.DynamoDB.Converter.unmarshall
但我的代码出现错误:
Argument of type 'ItemList' is not assignable to parameter of type "AttributeMap".
Index signature for type 'string' is missing in type "AttributeMap[]".
这是我的代码:
if (result.Count > 0) {
const newImage = AWS.DynamoDB.Converter.unmarshall(
result.Items
)
console.log('new Image: ' + JSON.stringify(newImage));
resolve(newImage);
} else {
console.log('No record found');
reject(err);
}
如果我删除 DynamoDB JSON 中的 [] 括号,那么它会成功转换,但显然我不能在我的程序中这样做,因为括号存在是有原因的!
有谁知道如何将我的 JSON 文件转换为 unmarshall
可以接受的格式?
映射项目并一一解组。 (un)marshal
accepts an object type,不是数组。
import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; // SDK V3, but worked the same in V2
(() => {
const items = [{ serviceUserId: { S: '123456789' }, createdDate: { S: '11-12-2021' } }];
// from DynamoDB JSON
const unmarshalled = items.map((i) => unmarshall(i));
// make the return trip back to DynamoDB JSON
const marshalled = unmarshalled.map((i) => marshall(i));
})();
我正在使用查询从 DynamoDB 检索数据,我得到以下返回:
[{"serviceUserId":{"S":"123456789"},"createdDate":{"S":"11-12-2021"}}]
DynamoDB JSON 格式具有我试图通过转换为正常 JSON 格式来摆脱的类型。我尝试使用 AWS.DynamoDB.Converter.unmarshall
但我的代码出现错误:
Argument of type 'ItemList' is not assignable to parameter of type "AttributeMap".
Index signature for type 'string' is missing in type "AttributeMap[]".
这是我的代码:
if (result.Count > 0) {
const newImage = AWS.DynamoDB.Converter.unmarshall(
result.Items
)
console.log('new Image: ' + JSON.stringify(newImage));
resolve(newImage);
} else {
console.log('No record found');
reject(err);
}
如果我删除 DynamoDB JSON 中的 [] 括号,那么它会成功转换,但显然我不能在我的程序中这样做,因为括号存在是有原因的!
有谁知道如何将我的 JSON 文件转换为 unmarshall
可以接受的格式?
映射项目并一一解组。 (un)marshal
accepts an object type,不是数组。
import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; // SDK V3, but worked the same in V2
(() => {
const items = [{ serviceUserId: { S: '123456789' }, createdDate: { S: '11-12-2021' } }];
// from DynamoDB JSON
const unmarshalled = items.map((i) => unmarshall(i));
// make the return trip back to DynamoDB JSON
const marshalled = unmarshalled.map((i) => marshall(i));
})();