gpt4 book ai didi

java - 如何在不下载 child 的情况下从 Firebase 获取 child key ?

转载 作者:行者123 更新时间:2023-12-05 00:14:03 25 4
gpt4 key购买 nike

我有一个 Firebase 数据库,其中有一个节点“items”,它有很多子节点,我想导入一个子键列表。由于每个子项都包含一些我对此不感兴趣的数据,因此我只想下载子项 key (以尽量减少传输的数据量)。为了便于说明,假设我有以下数据结构:

enter image description here

然后我想获取所有用户的 ID,如 5Aoz6ZaB9QS7o9M4lsdbh07VGA02 等。但不下载其他用户数据,如消息、姓名、建议和分数。

最佳答案

要获取这些用户的 ID,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String uid = ds.getKey();
Log.d("TAG", uid);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
usersRef.addListenerForSingleValueEvent(valueEventListener);

输出将是:

5Aoz6ZaB9QS7o9M4lsdbh07VGA02
// the other ids

当您在特定节点上附加监听器时,您将获得该节点下的所有数据。这就是 Firebase 实时数据库的工作方式,不幸的是,这种行为无法更改。但是有一个解决方法,您可以创建另一个单独的节点,您可以在其中单独添加所有这些 ID。新节点应如下所示:

Firebase-root
|
--- userIds
|
--- 5Aoz6ZaB9QS7o9M4lsdbh07VGA02: true
|
--- //other ids

在这种情况下,如果您在 userIds 节点上附加一个监听器,您将只会获得所需的数据,仅此而已。获取这些 ID 的代码与上面的代码类似,但是您需要使用 .child("userIds") 而不是使用 .child("users")。输出将是相同的。

如果你想要其他行为,你可以考虑使用 Cloud Firestore这种行为不再是问题。

关于java - 如何在不下载 child 的情况下从 Firebase 获取 child key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50117178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com