我正在使用aws-sdk
让 NodeJS 与 DynamoDB 表进行交互。这是我第一次了解 DynamoDB。
当使用像这样的调用时getItem()
or updateItem()
,数据结构包括类型,如下所示:
{
'a': { S: 'My string' }
}
有没有什么方法可以在没有类型的情况下传递和接收这些对象?所以...
{
'a': 'My string'
}
或者,任何已编写的辅助函数可以将对象与此格式相互转换......?
const data = dbToObj({ 'a': { S: 'My string' } })
// { 'a': 'My string' }
因此,我可以在填充调用参数时转换为它,并在接收数据时从它转换。
尝试避免访问我的数据,例如:
const myData = data.Item.something.M.somethinElse.M.qwerty.S
我知道我可以自己写一些东西,只是想知道是否有人知道已经可用的功能/选项可以做到这一点。我找不到任何。
发现这个:
- https://github.com/kayomarz/dynamodb-data-types https://github.com/kayomarz/dynamodb-data-types
- https://www.npmjs.com/package/dynamodb-data-types https://www.npmjs.com/package/dynamodb-data-types
正是我正在寻找的东西。
安装:npm i dynamodb-data-types
提供wrap({ 'a': 'My string' })
and unwrap({ 'a': { S: 'My string' } })
用于与普通对象进行转换的方法。
UPDATE
我现在也发现了这个:AWS.DynamoDB.DocumentClient http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html,这是aws-sdk
.
文档客户端通过抽象属性值的概念,简化了 Amazon DynamoDB 中项目的使用。此抽象注释作为输入参数提供的本机 JavaScript 类型,并将带注释的响应数据转换为本机 JavaScript 类型。
UPDATE 2
亚马逊正在他们的领导下开展这项工作awslabs
github页面:
Amazon DynamoDB 自动编组器 https://github.com/awslabs/dynamodb-data-mapper-js/tree/master/packages/dynamodb-auto-marshaller
该库提供了一个 Marshaller 类,可将本机 JavaScript 值转换为 DynamoDB AttributeValues,然后再转换回来。它设计用于与集合、映射和迭代等 ES6 功能配合使用,并且可以配置为支持仅由 JavaScript 支持的数据类型(例如空二进制缓冲区)或 Amazon DynamoDB(例如任意大小的数字),并且需要进行最小的权衡。
这是他们的一部分适用于 JavaScript 的 DynamoDB DataMapper https://github.com/awslabs/dynamodb-data-mapper-js包裹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)