gpt4 book ai didi

android - 具有深度和多个子级的树中的 Firebase 查询

转载 作者:行者123 更新时间:2023-11-30 00:17:15 25 4
gpt4 key购买 nike

我在使用值查询 firebase 数据库并获取特定节点时遇到问题。我的模式显示在这里:

Firebase schema

在我的架构中,“workLocations”属于“excavationWorks”,而“excavationWorks”属于“excavationLists”。

这意味着到特定 workLocation 的路径是 excavationLists/excavationWorks/workLocations/(specific workLocation)

我遇到的问题是我想通过位置值(假设是伦敦)查询 workLocations 节点并获取父节点(红色圆圈键是特定 workLocation 的键)。

我已经搜索并阅读了很多帖子,但我还没有成功。

我的代码是这样的:

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

Query query = reference.child("workLocations").orderByChild("location").equalTo("London");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot workLoc : dataSnapshot.getChildren()) {
// do something with the individual "issues"
Log.d(TAG, workLoc.getKey());
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

谢谢

最佳答案

为此,您需要像这样查询数据库两次:

DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
DatabaseReference workLocationsRef = reference
.child("excavationLists")
.child("excavationWorks")
.child("workLocations");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
for(DataSnapshot ds : dSnapshot.getChildren()) {
String key = ds.getKey();

Query query = workLocationsRef.child(key).orderByChild("location").equalTo("London");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String description = snapshot.child("description").getValue(String.class);
Log.d("description", description);
String partentKey = snapshot.getRef().getParent().getKey();
Log.d("partentKey", partentKey);
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(eventListener);
}
}
}

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

关于android - 具有深度和多个子级的树中的 Firebase 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016557/

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