gpt4 book ai didi

typescript - 如何将 DynamoDB AttributeMap 类型映射到接口(interface)?

转载 作者:搜寻专家 更新时间:2023-10-30 20:40:48 26 4
gpt4 key购买 nike

假设我有一个 typescript 界面:

interface IPerson {
id: string,
name: string
}

然后我在 dynamo 中对人员表运行表扫描,我希望能够做的是:

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

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

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

很明显它们是不同的类型,但是数据结构是完全一样的。我的问题是我如何才能将发电机 AttributeMap 转换为我的 IPerson 界面?

最佳答案

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


JavaScript AWS SDK V3(2020 年 12 月后)

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

Docs Example .

const { unmarshall } = require("@aws-sdk/util-dynamodb");

unmarshall(res.Item) as Type;

旁注:AWS DynamoDB JavaScript SDK 提供了一个 DynamoDBDocumentClient它消除了这整个问题并改用普通的键值对象。


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

使用 AWS.DynamoDB.Converter :

// Cast the result items to a type.
const people: IPerson[] = result.Items?.map((item) => Converter.unmarshall(item) as IPerson);

unmarshall() 的文档:

unmarshall(data, options) ⇒ map

Convert a DynamoDB record into a JavaScript object.

旁注:AWS DynamoDB JavaScript SDK 提供了一个 DynamoDBDocumentClient它消除了这整个问题并改用普通的键值对象。

关于typescript - 如何将 DynamoDB AttributeMap 类型映射到接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45040783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com