我正在使用 AWS Lambda 来扫描 DynamoDB 表中的数据 . 这是我得到的回报:
{
"videos": [
{
"file": {
"S": "file1.mp4"
},
"id": {
"S": "1"
},
"canvas": {
"S": "This is Canvas1"
}
},
{
"file": {
"S": "main.mp4"
},
"id": {
"S": "0"
},
"canvas": {
"S": "this is a canvas"
}
}
]
}
我的前端应用程序正在使用 Ember Data Rest Adapter ,它不接受此类响应 . 有什么方法可以获得正常的JSON格式吗?有一个名为 dynamodb-marshaler
的NPM模块将DynamoDB数据转换为普通JSON . 如果可能的话,我正在寻找 native solution .
6 回答
AWS JavaScript SDK最近使用Document Client进行了更新,它完全满足您的需求 . 查看此处的公告和用法示例:http://blogs.aws.amazon.com/javascript/post/Tx1OVH5LUZAFC6T/Announcing-the-Amazon-DynamoDB-Document-Client-in-the-AWS-SDK-for-JavaScript
我知道有点旧但我在节点js lambda函数中处理来自dynamoDB的流数据有同样的问题 . 我使用了@churro提出的建议
导入sdk和输出转换器
使用小解释的解析功能
希望能帮助到你
实际上你应该使用AWSJavaScriptSDK中的
unmarshall
函数:我认为这只是每个应用程序的自定义转换练习 . 从DynamoDB的项目格式到您的应用程序格式的简单转换可能如下所示:
如果要为此构建通用系统,则必须处理DynamoDB的各种AttributeValue types . 像下面这样的函数可以完成这项工作,但是我更复杂的属性值类型:
如果您需要在线编辑器试试这个
https://2json.net/dynamo
在这里你可以找到这样做的要点:
}
https://gist.github.com/igorzg/c80c0de4ad5c4028cb26cfec415cc600