node.js - Firestore 获取 node.js 服务器上的所有文档。可扩展性
问题描述
每天晚上 12 点,我都会使用此代码从我的 firestore 数据库中获取所有用户。
const usersRef = db.collection('users');
const snapshot = await usersRef.get();
snapshot.forEach(doc => {
let docData = doc.data()
// some code and evaluations
})
我只想知道这是否是一种可靠的方法,可以在不使系统超载的情况下每晚读取所有数据。例如,如果我有 50k 用户,并且我想每晚在服务器上更新他们的信息,这是否需要大量的内存服务器端来做?此外,是否有更好的方法来处理我正在尝试做的事情,一般前提是每晚更新用户数据。
解决方案
您的代码一次性加载集合中的所有文档。即使在服务器上,有时也会耗尽内存。
相反,您需要阅读有限数量的文档,处理这些文档,然后阅读/处理下一批文档,直到完成。这称为使用查询对数据进行分页,并确保您可以处理任意数量的文档,而不仅仅是可以放入内存的文档。
推荐阅读
- formatting - 乳胶小节去除虚线
- c# - .Net Framework 4.8 中的 WinForms 应用程序无法从命令行构建
- salesforce - 查找过滤器问题——棘手的一(闪电)
- terraform - 在 terraform 后端“s3”中使用变量
- mongodb - MongoDB查询特定孩子
- php - 每 4 个循环打开 PHP 回显/打印值(计数开始为 0)
- javascript - 将日期值转换为可在 TestCafe 中使用的字符串
- python-3.x - 将目录中的所有 excel 文件读入数据框并使用文件名添加列
- google-chrome - 图标在 chrome 上显示为一些特殊字符
- apache-kafka - 如何使用kafka supervisor将kafka的一个特定分区中的数据读入druid