繁体   English   中英

如何在 NodeJS 的 dynamo db 中查找全部或全部获取

[英]How to do find all or get all in dynamo db in NodeJS

我想从 nodejs 的 Dynamo DB 中的表中获取所有数据,这是我的代码

const READ = async (payload) => {
  const params = {
    TableName: payload.TableName,
  };

  let scanResults = [];
  let items;
  do {
    items = await dbClient.scan(params).promise();
    items.Items.forEach((item) => scanResults.push(item));
    params.ExclusiveStartKey = items.LastEvaluatedKey;
  } while (typeof items.LastEvaluatedKey != "undefined");

  return scanResults;
};

我实现了这个并且工作正常,但是我们的代码审查工具标记为红色,表明这没有优化或导致一些 memory 泄漏,我只是不知道为什么,我在其他地方读到从发电机 DB 扫描 API 不是最获取节点中所有数据的有效方法,或者我还缺少其他东西来优化此代码

仅当您的数据大小非常小(少于 100 个项目或数据大小小于 1MB,这是我更喜欢的,在这种情况下,您不需要do-while循环)时才这样做

考虑以下场景,如果将来越来越多的项目将添加到 DynamoDB 表中,该怎么办? - 这将返回您的所有数据并放入scanResults变量,对吗? 这将影响 memory。 此外,DynamoDB 扫描操作很昂贵——就 memory 和成本而言

如果数据非常少,使用 SCAN 操作是完全可以的。 否则,go 带有分页(我总是喜欢这个)。 如果有 1000 多个项目,那么谁会一口气查看所有这些? 所以改用分页。

让我们看另一个场景,如果您的要求是检索所有数据以进行一些分析或聚合。 然后最好将聚合数据预先存储到表中(相同或不同的 DynamoDB 表)作为一个项目或使用一些分析数据库。

如果您的要求是其他内容,请在问题中详细说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM