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'}] });