djr*_*s70 5 javascript amazon-web-services amazon-dynamodb aws-lambda
DynamoDB在查询响应中为每个元素包括一个数据类型描述符,如下所示:
"Item": {
"M" : {
"Age": {"N": "8"},
"Name": {"S": "Fido"},
"Vaccinations": {
"M": {
"Rabies": {
"L": [
{"S": "2009-03-17"},
{"S": "2011-09-21"},
{"S": "2014-07-08"}
]
},
"Distemper": {"S": "2015-10-13"}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想剥离所有这些描述符(“ S”,“ L”,“ M”等),以便JSON.stringify在数据之前看起来像下一个示例。
"Item": {
"Age": "8",
"Name": "Fido",
"Vaccinations": {
"Rabies": [
"2009-03-17",
"2011-09-21",
"2014-07-08"
]
"Distemper": "2015-10-13"
}
}
Run Code Online (Sandbox Code Playgroud)
是否有标准(或推荐)方法来执行此操作?
amb*_*t05 11
他们有一个您可以使用的转换器。
例如,这是他们的示例:
var data= {"Item": {
"Age": {"N": "8"},
"Name": {"S": "Fido"},
"Vaccinations": {
"M": {
"Rabies": {
"L": [
{"S": "2009-03-17"},
{"S": "2011-09-21"},
{"S": "2014-07-08"}
]
},
"Distemper": {"S": "2015-10-13"}
}
}}};
var marshalled = AWS.DynamoDB.Converter.unmarshall(data);
Run Code Online (Sandbox Code Playgroud)
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/Converter.html
使用 DynamoDB DocumentClient,它会为您做这件事。
不熟悉 DynamoDb 的使用。我的猜测是,您可以使用 SDK 来执行此操作,或者查询中的设置可用于关闭描述符
以下似乎适用于您示例中的所有案例
var descriptors = ['L', 'M', 'N', 'S'];
function flatten(o) {
// flattens single property objects that have descriptors
for (let d of descriptors) {
if (o.hasOwnProperty(d)) {
return o[d];
}
}
Object.keys(o).forEach((k) => {
for (let d of descriptors) {
if (o[k].hasOwnProperty(d)) {
o[k] = o[k][d];
}
}
if (Array.isArray(o[k])) {
o[k] = o[k].map(e => flatten(e))
} else if (typeof o[k] === 'object') {
o[k] = flatten(o[k])
}
});
return o;
}
data = flatten(data)
console.log(data)Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper {
max-height: 100%;
}Run Code Online (Sandbox Code Playgroud)
<script>
var data = {"Item":{"Age":{"N":"8"},"Name":{"S":"Fido"},"Vaccinations":{"M":{"Rabies":{"L":[{"S":"2009-03-17"},{"S":"2011-09-21"},{"S":"2014-07-08"}]},"Distemper":{"S":"2015-10-13"}}}}};
</script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |