我在 NodeJS 12x Lambda 函数中有以下代码:
targetedAliases = ["abc", "efg"]; //Not used yet. But want to replace alias with this array.
alias = "abc" //using this one aka targetedAliases[0].
const dynamoDB = new AWS.DynamoDB({
apiVersion: "2012-10-08"
});
var aliasScores;
const params = {
TableName: 'a-table',
FilterExpression: '#alias = :alias',
ExpressionAttributeNames: {
'#alias': 'alias',
},
ExpressionAttributeValues: {
':alias': {
S: alias
},
}
};
aliasScores = await dynamoDB.scan(params).promise();
console.log("====> ", aliasScores);
该函数按预期打印 aliasScores
的内容,但我需要为 targetedAliases
数组上的每个项目执行此 n
次。
有没有办法可以使用 Array.forEach 或类似的方法对数组中的每个项目迭代执行查询/扫描?或者,我可以在 FilterExpression
上使用数组来执行一次查询/扫描吗?
我希望将每个查询/扫描结果存储在 aliasScores
变量中,作为所有返回对象的串联,以便在下面进一步使用它。
最佳答案
您可以将 Promise.all
与 .map
一起使用来并行执行这些操作并以数组形式获取结果。像这样的事情
const targetedAliases = ["abc", "efg"]; //Not used yet. But want to replace alias with this array.
alias = "abc" //using this one aka targetedAliases[0].
const dynamoDB = new AWS.DynamoDB({
apiVersion: "2012-10-08"
});
var aliasScores;
const result = await Promise.all(targetedAliases.map(alias => {
const params = {
TableName: 'a-table',
FilterExpression: '#alias = :alias',
ExpressionAttributeNames: {
'#alias': 'alias',
},
ExpressionAttributeValues: {
':alias': {
S: alias
},
}
};
return dynamoDB.scan(params).promise();
}));
console.log(result);
关于node.js - Query() DynamoDB 查询 Lambda NodeJS 上数组中的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60421258/