【发布时间】:2019-09-21 20:19:25
【问题描述】:
有没有办法在查询过程中转换 DynamoDB 查询的输出(在 Lambda 中使用 doc-client)。具体来说,我希望提取列表的第一项并将其放入一个新属性中。
作为一个简化示例,DynamoDB 具有以下条目:
{
"Id": 1
"Items": [ "item-1", "item-2", "item-3" ]
},
{
"Id": 2,
"Items": [ "item-x" ]
},
{
"Id": 3,
// "Items" is potentially optional
}
并使用以下 Lambda 函数:
// ...
exports.handler = async (event, context) => {
return dynamoDoc.query({
TableName : 'some-table',
Select : 'SPECIFIC_ATTRIBUTES',
KeyConditionExpression : 'Id = :id',
ExpressionAttributeValues : {
':id' : event.Id,
},
ProjectionExpression : `
Id,
Items[0]
`,
}).promise();
};
但是,这会返回一个列表,其中包含如下所示的项目:
"Items": [
{
"Id": 1,
"Items": [
"item-1"
]
},
{
"Id": 2,
"Items": [
"item-x"
]
},
{
"Id": 3
}
]
有没有办法使用某种表达式重新映射属性名称,这样我就可以得到以下形式的数据输出:
Items: [
{
"Id": 1,
"FirstItem: "item-1"
},
{
"Id": 2,
"FirstItem: "item-x"
},
{
"Id": 3
}
]
我目前在数据上使用 Javascript 的 array.forEach,但是,我试图避免这种情况,宁愿利用 DynamoDB 进行这种计算。
【问题讨论】:
标签: javascript amazon-web-services amazon-dynamodb