首页 > 解决方案 > 将 DynamoDB Scan 操作替换为 Query

问题描述

我正在使用 DynamoDB 扫描操作从 DynamoDB 表中获取所有项目。代码如下:

"use strict";
const AWS = require("aws-sdk");

module.exports.get = async () => {
  try {
    const dynamodb = new AWS.DynamoDB.DocumentClient();

    console.log("getting items");

    const params = {
      TableName: "ProductsTable",
    };

    const result = await dynamodb.scan(params).promise();

    console.log("got results", result.Items);

    return { body: JSON.stringify(result.Items) };
  } catch (error) {
    console.error(error);
    return {
      status: 500,
      message: error.message,
      body: JSON.stringify(error),
    };
  }
};

但扫描不是一种有效的操作,不推荐。如何使用查询操作从表中获取所有项目?我可以用查询替换扫描操作以获取所有项目吗?有没有其他方法可以从表中获取所有项目?请告诉我。

谢谢

标签: javascriptamazon-web-servicesamazon-dynamodbaws-sdkdynamodb-queries

解决方案


扫描只是效率低下,因为它必须查看所有内容。

如果您无论如何都想退回所有东西,那么没有理由不使用 Scan。

事实上,您可以使用内置的并行扫描来加快处理速度。

Query() 必须由您的应用程序代码手动并行运行。


推荐阅读