parsingDynamoDB请求

我的目标是recursion地从dynamo.getItem方法parsingDynamoDB请求。

不幸的是,我在DynamoDB SDK for Node.js中找不到类似的方法。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html

我正在寻找从结果中删除types的有效方法。 在DynamoDB中,键是属性的单字母名称,如“N”,“S”,“M”。

这些types的描述:

 N means DynamoDB Number type S means dynamoDB String type M means DynamoDB Map type (object with properties) 

目前的JSON结构是:

 { "id":{ "N":"4" }, "number":{ "N":"1" }, "data":{ "M":{ "aaa":{ "S":"AAA" }, "lv2":{ "M":{ "lv3":{ "M":{ "ccc":{ "N":"111" } } }, "bbb":{ "S":"BBB" } } } } } } 

我需要一个JavaScript函数将上面的JSON映射到一个较短的版本:

 { "id": "4", "number": "1", "data": { "aaa": "AAA", "lv2": { "lv3": { "ccc": "111" }, "bbb": "BBB" } } } 

这通常是一个JavaScript问题,但我想有DynamoDB经验的人可能知道如何处理这个问题。

有任何想法吗?

如果你使用节点,那么有一个很酷的包,它可以完成对我非常好的dynamo-to-json编组和解组:

https://www.npmjs.com/package/dynamodb-marshaler

对象的基本编组

 var AWS = require('aws-sdk'); var marshalItem = require('dynamodb-marshaler').marshalItem; AWS.config.region = 'us-west-2'; var dynamoDb = new AWS.DynamoDB(); dynamoDb.putItem({ TableName: 'users', Item: marshalItem({username: 'nackjicholson'}) // {username: {S: 'nackjicholson'}} }); 

对象的基本解组

 var AWS = require('aws-sdk'); var unmarshalItem = require('dynamodb-marshaler').unmarshalItem; AWS.config.region = 'us-west-2'; var dynamoDb = new AWS.DynamoDB(); var data = dynamoDb.scan({ TableName: 'users' }, function(err, data) { // data.Items = [{username: {S: 'nackjicholson'}] var items = data.Items.map(unmarshalItem); console.log(items); // [{username: 'nackjicholson'}] });