gpt4 book ai didi

java - 在 Firebase 中查询组的正确做法

转载 作者:行者123 更新时间:2023-12-04 15:02:22 25 4
gpt4 key购买 nike

我正在尝试了解 Firebase 数据库中的组。我创建了一个名为“流派”的简单索引,并将其放置在我的站节点中:

"STATIONS": {
"GENRES": {
"D&B": {
"RODR": false
},
"HipHop": {
"RODR": false
},
"TRANCE": {
"RODR": true
}
},
"RODR": {
"PROMOTED": false,
"downvote": 2,
"image": "image url",
"station": "Revolution Of Dance Radio",
"tag": "We Are The Revolution",
"upvote": 1001,
"url": "to be added"
},
"UKNRADIO": {
"Promoted": false,
"downvote": 2,
"image": "url for image",
"station": "UKN RADIO",
"tag": "The Home Of The Mashup",
"upvote": 1001,
"url": "to add"
}
},
然后我将这些 child 放在一个单独的节点中,键设置为与索引键相同。
如何查询流派节点以获取恍惚索引中的所有项目?在这个例子中哪个是 RODR?
编辑
此值用于访问我的流派节点中的右子节点:
String value = getArguments().getString("Genre");
Log.i("Genre_bundle",value);
这是显示我的列表的基本代码:
String DATABASE_CHILD = "STATIONS";
ref = db.getReference().child(DATABASE_CHILD);
编辑 2
我尝试在单独的监听器中设置查询以获取我需要的 key ;这有效,但前提是节点中只有一个项目。一旦我添加第二个,例如 uknradio= true它不会显示。
 String DATABASE_CHILD = "STATIONS";
ref = db.getReference().child(DATABASE_CHILD).child("GENRES").child(value);

Query query = ref.orderByValue().equalTo(true);

query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren())
KEYS = dataSnapshot.getKey();

Log.i("KEY", KEYS);
getStations(KEYS);


}

private void getStations(String Key) {
String DATABASE_CHILD = "STATIONS";
ref1 = db.getReference().child(DATABASE_CHILD);
ref1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot snap : snapshot.getChildren()) {
String key_Checker = snap.getKey();

if (KEYS.matches(key_Checker)) {
Log.i("KEY", "Present");

最佳答案

如果您想阅读 TRANCE 的电台流派,这是一个两步过程:

  • 阅读 /STATIONS/GENRES/TRANCE获取电台 key 的路径。
  • 循环按键并依次读取每个电台的信息。

  • 在带有硬编码值的代码中,循环如下:
    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference genreRef = rootRef.child("STATIONS/GENRES/TRANCE");
    genreRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot genreSnapshot) {
    for (DataSnapshot stationKeySnapshot: genreSnapshot.getChildren()) {
    String stationKey = stationKeySnapshot.getKey();

    DatabaseReference stationRef = rootRef.child("STATIONS").child(stationKey);
    stationRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot stationSnapshot) {
    Log.i("DB", stationSnapshot.child("station").getValue(String.class);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    throw databaseError.toException();
    }
    }
    }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    throw databaseError.toException();
    }
    }

    关于java - 在 Firebase 中查询组的正确做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66754991/

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