gpt4 book ai didi

android - 如何从 firebase 中的值中获取键

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:02 25 4
gpt4 key购买 nike

当我知道字段“name”在 Firebase 的以下结构中包含“efg”时,如何获取键“-KLpcURDV68BcbAvlPFy”。

clubs
-KLpcURDV68BcbAvlPFy
dept: "abc"
desc: "xyz"
name: "efg"
-asdasdasddsad
dept: "asda"
desc: "asd"
name: "adddd"

我试过了,但它返回了“俱乐部”

mDatabase.child("clubs").orderByChild("name").equalTo("efg").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String clubkey =dataSnapshot.getKey();

最佳答案

那是因为您正在使用 ValueEventListener。如果查询匹配多个 child ,它会返回所有这些 child 的列表。即使只有一个匹配的 child ,它仍然是一个列表。由于您在该列表上调用 getKey(),因此您将获得运行查询的位置的键。

要获取匹配子项的键,遍历快照的子项:

mDatabase.child("clubs")
.orderByChild("name")
.equalTo("efg")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
String clubkey = childSnapshot.getKey();

但请注意,如果您假设俱乐部名称是唯一的,那么您不妨将俱乐部存储在他们的名字下,然后无需查询即可访问正确的俱乐部:

mDatabase.child("clubs")
.child("efg")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String clubkey = dataSnapshot.getKey(); // will be efg

关于android - 如何从 firebase 中的值中获取键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232140/

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