如何将DynamoDB AttributeMap类型映射到打字稿中的接口?

And*_*ndy 6 amazon-dynamodb typescript

说我有一个打字稿界面:

interface IPerson {
    id: string,
    name: string
}
Run Code Online (Sandbox Code Playgroud)

我在发电机上的人员表上运行表扫描,我想做的是:

const client = new AWS.DynamoDB.DocumentClient();

client.scan(params, (error, result) => {
    const people: IPerson[] = result.Items as IPerson[];
};
Run Code Online (Sandbox Code Playgroud)

我收到错误 Type 'AttributeMap[]' cannot be converted to type 'IPerson[]'

显然,它们是不同的类型,但是数据结构是完全相同的。我的问题是,从本质上讲AttributeMap我如何才能将发电机投射到IPerson界面上?

小智 5

执行此操作的正确方法是使用 AWS DynamoDB SDKunmarshall方法。

\n
\n

JavaScript AWS 开发工具包 V3(2020 年 12 月后)

\n

使用包unmarshall中的方法@aws-sdk/util-dynamodb

\n

文档示例.

\n
const { unmarshall } = require("@aws-sdk/util-dynamodb");\n\nunmarshall(res.Item) as Type;\n
Run Code Online (Sandbox Code Playgroud)\n

旁注:AWS DynamoDB JavaScript SDK 提供了一个解决DynamoDBDocumentClient方案,可以消除整个问题并使用普通的键值对象。

\n
\n

JavaScript AWS SDK 的先前版本(2020 年 12 月之前)

\n

使用AWS.DynamoDB.Converter

\n
// Cast the result items to a type.\nconst people: IPerson[] = result.Items?.map((item) => Converter.unmarshall(item) as IPerson);\n
Run Code Online (Sandbox Code Playgroud)\n

文档unmarshall()

\n
\n

解组(数据,选项)\xe2\x87\x92 映射

\n

将 DynamoDB 记录转换为 JavaScript 对象。

\n
\n

旁注:AWS DynamoDB JavaScript SDK 提供了一个解决DynamoDBDocumentClient方案,可以消除整个问题并使用普通的键值对象。

\n