gpt4 book ai didi

android - 在 Firebase 中如何通过单个查询返回多个项目?

转载 作者:行者123 更新时间:2023-11-30 00:35:47 24 4
gpt4 key购买 nike

我以前从未使用过 NoSQL 数据库,所以我对它们的工作方式有些困惑。我正在尝试创建一个城市景点数据库。我有每个城市的键和值。在每个城市下,我想要一个景点列表。

问题是每个景点都需要自己的 key 。如果我为每个景点提供自己的 key ,那么如何使用单个查询返回一个城市的所有景点?我不需要为每个键运行查询来获取每个值吗?

我基本上是想弄清楚如何设置我的数据库,以便我可以在 London 上运行查询并获取其下列出的三个项目。

最佳答案

首先你必须为你的景点创建一个POJO(Plain Old Java Object),其中包含描述等。变量需要与数据库中的键一致:

@IgnoreExtraProperties
public class Attraction{
String name, description1, descrition2;
//Other variables/keys

String getName(){
return this.name;
}

void setName(String name){
this.name = name;
}

//Other getter/setter methods
public Attraction(){}
}

接下来你的数据库结构应该是这样的:

City
---Attraction Name
------Description 1
------Description 2

然后您可以简单地执行查询:

DatabaseReference ref = databaseReference.child("City").child("London");

然后将其与监听器耦合以获取景点并将其存储在列表中:

List<Attraction> attractions = new ArrayList<>();
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot val : dataSnapshot.getChildren()){
Attraction attraction = val.getValue(Attraction.class);
attraction.setName(val.getKey()); //This is because the key is the attraction name based on the structure
attractions.add(attraction));
}
//After getting all of them in a list, return them
return attractions; //use this if you want to return them as a List Object
return attractions.toArray(new Attraction[attractions.size()]); //use this if you want to return it as an array
}
@Override
public void onCancelled(FirebaseError firebaseError) {

}
})

如果这对您有帮助,请告诉我。

关于android - 在 Firebase 中如何通过单个查询返回多个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43427985/

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