首页 > 解决方案 > 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 用户,并且我想每晚在服务器上更新他们的信息,这是否需要大量的内存服务器端来做?此外,是否有更好的方法来处理我正在尝试做的事情,一般前提是每晚更新用户数据。

标签: node.jsgoogle-cloud-firestore

解决方案


您的代码一次性加载集合中的所有文档。即使在服务器上,有时也会耗尽内存。

相反,您需要阅读有限数量的文档,处理这些文档,然后阅读/处理下一批文档,直到完成。这称为使用查询对数据进行分页,并确保您可以处理任意数量的文档,而不仅仅是可以放入内存的文档。


推荐阅读