node.js - 如何使用扫描或任何 dynamodb 方法实现分页功能?
问题描述
我看到这可以用来限制结果的显示。使用dynamodb npm 库。
Account.scan().limit(10).exec(printResults);
但是我如何告诉扫描方法从特定记录开始呢?基本上我需要的是getAll
我的自定义数据库访问层的方法。我找到了该getItems
方法,但它需要索引来加载模型。所以它只加载特定的模型。我需要对所有记录进行分页。
解决方案
来自 dynamodb文档
单次扫描仅返回符合 1 MB 大小限制的结果集。要确定是否有更多结果并一次检索一页,应用程序应执行以下操作:
检查低级 Scan 结果:如果结果包含 LastEvaluatedKey 元素,则继续执行步骤 2。如果结果中没有 LastEvaluatedKey,则没有要检索的项目。
构造一个新的 Scan 请求,参数与前一个相同。但是,这一次,从步骤 1 中获取 LastEvaluatedKey 值,并将其用作新 Scan 请求中的 ExclusiveStartKey 参数。
运行新的扫描请求。
转到步骤 1。
从您的链接中查看 dynamodb npm...
// Load 20 accounts Account .scan() .limit(20) .exec(); // Load All accounts, 20 at a time per request Account .scan() .limit(20) .loadAll() .exec();
但看起来startKey
可能直接对应ExclusiveStartKey
// Start scan using start key
Account
.scan()
.where('age').notNull()
.startKey('foo@example.com')
.exec()
推荐阅读
- java - RecyclerViewAdapter 中的设置器不起作用?
- performance - 在性能测试中,如果测试需要 10 秒,持续时间将在 5 分钟内完成,会发生什么?
- docker - 在容器中找不到 WORKDIR
- reactjs - How to test npm package shipped as .tgz file in react using jest?
- c++ - Accessing an array using a pointer in a struct
- react-native - Unhandled promise rejection: TypeError: Network request failed in react native
- powershell - What is Set-PSRepository scope effect?
- javascript - Switch Facebook Comments without reloading a website
- sql - SQL grouping sets riddle
- python - Python type annotations style for functions with long arguments