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

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

当使用像getItem()updateItem()这样的调用时,数据结构包含types,如下所示:

 { 'a': { S: 'My string' } } 

有没有办法传递和接收这些对象没有types..? 所以…

 { 'a': 'My string' } 

或者,已经编写的任何帮助函数都会将对象转换为这种格式。

 const data = dbToObj({ 'a': { S: 'My string' } }) // { 'a': 'My string' } 

所以我可以转换到它填充调用参数,并在接收数据时从它转换。

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

 const myData = data.Item.something.M.somethinElse.M.qwerty.S 

我知道我可以自己写一些东西,只是想知道是否有人知道已经可用的函数/选项。 我找不到任何东西。

find这个:

正是我在找什么。

安装: npm i dynamodb-data-types

提供wrap({ 'a': 'My string' })unwrap({ 'a': { S: 'My string' } })方法用于与普通对象进行转换。

UPDATE

我现在也发现了这个: AWS.DynamoDB.DocumentClient ,它是aws-sdk

文档客户端通过抽象化属性值的概念简化了对Amazon DynamoDB中的项目的处理。 这个抽象注释了作为input参数提供的本地JavaScripttypes,以及将注释的响应数据转换为本机JavaScripttypes。

更新2

这是由亚马逊在他们的awslabs github页面上工作:

Amazon DynamoDB Automarshaller

该库提供了一个Marshaller类,可将原生JavaScript值转换为DynamoDB AttributeValues,然后再返回。 它devise用于处理ES6function,例如集合,映射和迭代,并且可以configuration为支持仅由JavaScript(例如空的二进制缓冲区)支持的数据types,或者由Amazon DynamoDB支持的数据types(例如任意大小的数字),且具有最小的折衷。

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

Dynogels提供了一个更清洁的方式来处理,而不用担心types。 我们在生产中使用它,没有任何问题。

https://github.com/clarkie/dynogels

 Account.create({email: 'foo@example.com', name: 'Foo Bar', age: 21}, function (err, acc) { console.log('created account in DynamoDB', acc.get('email')); }); 

它是dynamodb的ODM(对象数据映射器)。

希望能帮助到你。

Dyanmoose是另一种可以将更多无关代码抽象出来的build模工具。 github在这里 。 我认为它build立在AWS文档客户端之上,尽pipe我没有做太多挖掘。