带有和/或不带有类型的AWS DynamoDB数据?

Ste*_*ast 7 javascript amazon-web-services node.js amazon-dynamodb

我正在使用aws-sdkNodeJS与DynamoDB表进行交互。这是我第一次看DynamoDB。

当使用类似getItem()或的调用时updateItem(),数据结构包括如下类型:

{
  'a': { S: 'My string' }
}
Run Code Online (Sandbox Code Playgroud)

没有类型,有没有办法传递和接收这些对象?所以...

{
  'a': 'My string'
}
Run Code Online (Sandbox Code Playgroud)

或者,已经编写的任何帮助程序功能都可以将对象与该格式相互转换。

const data = dbToObj({ 'a': { S: 'My string' } })
// { 'a': 'My string' }
Run Code Online (Sandbox Code Playgroud)

因此,我可以在填充调用参数时转换为它,而在接收数据时将其转换为它。

尝试避免访问我的数据,例如:

const myData = data.Item.something.M.somethinElse.M.qwerty.S
Run Code Online (Sandbox Code Playgroud)

我知道我可以自己写点东西,只是想知道是否有人知道已经可用的功能/选项可以做到这一点。我找不到。

Ste*_*ast 7

发现了这一点:

正是我想要的。

安装: npm i dynamodb-data-types

提供wrap({ 'a': 'My string' })unwrap({ 'a': { S: 'My string' } })做转换和从普通对象的方法。

更新

我现在也发现了::AWS.DynamoDB.DocumentClient,这是的一部分aws-sdk

文档客户端通过抽象化属性值的概念,简化了在Amazon DynamoDB中处理项目的工作。此抽象对作为输入参数提供的本机JavaScript类型进行注释,并将带注释的响应数据转换为本机JavaScript类型。

更新2

亚马逊正在其awslabsgithub页面上对此进行处理:

Amazon DynamoDB自动编组器

该库提供了一个Marshaller类,该类将本机JavaScript值转换为DynamoDB AttributeValues,然后再次转换。它旨在与集,地图和可迭代对象等ES6功能配合使用,并且可以配置为仅支持JavaScript(例如,空二进制缓冲区)或Amazon DynamoDB(例如,任意大小的数字)所支持的数据类型,并且需要付出最小的代价。

它是其DynamoDB DataMapper For JavaScript软件包的一部分。