带有和/或不带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我没有做太多挖掘。