【发布时间】:2021-09-22 15:57:44
【问题描述】:
我有一个用户 ID 列表,我需要获取相应的用户信息。 我看到了两种方法。
第一:
user_reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
Users users = dataSnapshot.getValue(Users.class);
if (idList.contains(users.getUser_id())) {
usersList.add(users);
}
}
}
});
第二:
for (int i = 0; i < idList.size(); i++) {
user_reference.orderByChild("user_id").equalTo(idList.get(i))
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
Users users = dataSnapshot.getValue(Users.class);
usersList.add(users);
}
}
});
}
第一个似乎效率低下,因为如果我有几千个用户,它会加载每个用户,如果我只需要其中 5 个用户也是如此。
但是,第二种方法似乎相似,只是比较发生在服务器端。
那么哪个选项更快?
或者这两种选择都不是好方法?那么有没有我没想到的更好的解决方案呢?
【问题讨论】:
-
你能说明你是如何初始化
user_reference的吗?以及数据库中该路径的 JSON 的 sn-p(请作为文本,没有屏幕截图)。您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
标签: android firebase firebase-realtime-database