【发布时间】:2016-12-15 21:22:04
【问题描述】:
我在 Firebase 上有一个 users 表,每个用户都有一个 email 属性。
结构如下:
Users -> User UID(看起来像 n8haBbjgablobA2ranfuabu3aaaga2af) -> User Obj 其中包括 email 道具。
我想获取所有用户电子邮件的数组 (~1m)。
我怎样才能最有效地做到这一点?
附言:
我试过了:
usersRef.startAt(0).endAt(20).once("value", function(snapshot) {
console.log('FIRST 20');
console.log(snapshot.val()); // null
});
但这失败了。
【问题讨论】:
-
使用 childAdded 事件迭代所有用户节点非常简单(因此一次只加载一个)。但更大的问题是你为什么要这样做?可能有比一次加载它们更好的方法,但我们需要了解您的用例。
-
我开始在我的网站上发布时事通讯,我需要收集所有当前的电子邮件。这是一次性开始的事情,因为新注册的电子邮件将在用户注册时添加。
-
如果查询正常,我会将所有数据保存在 Firebase 中,每次发送时事通讯时,我都会查询 + 分块发送。
-
似乎没有人真正知道如何完成这项工作。 Firebase 需要做很多工作才能成为大型网站的可行数据库解决方案(而且 100 万用户并不是很大)。无论如何,我想出了一个解决方案,一个奇怪但有效的解决方案。
-
实际上,我的评论是一个超级简单直接的答案。使用 childAdded 遍历所有数据。这需要一段时间,但需要大约 10 行代码。
标签: javascript firebase firebase-realtime-database