node.js - Query() DynamoDB 查询 Lambda NodeJS 上数组中的每个值

标签 node.js aws-lambda amazon-dynamodb aws-sdk-nodejs

我在 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/

相关文章:

node.js - App应该连接cassandra的SEED NODE还是CLUSTER NODE?

node.js - 序列化嵌套数据结构

amazon-web-services - 一个 lambda 调用另一个 lambda 是否通过互联网?

amazon-web-services - CloudFormation、Lambda、S3 - 访问被 s3 拒绝

amazon-web-services - 如何在 AWS S3 托管的静态网页上显示来自 DynamoDB 的数据

amazon-web-services - Amazon dynamodb 记录大小限制解决方法

javascript - 如何将图像上传到 ExpressJS 服务器

mysql - 什么是呈现时间序列数据的首选方法

python - 将 openpyxl 与 lambda 结合使用

amazon-web-services - dynamoDB 是否对受限制的请求收费?