可以在需要时手动从 Firebase 检索数据,以及如何组合查询?
It is possible to retrieve data from Firebase manually at need and how combine querys?
我有一个 Firebase 实时数据库,其中包含一组与 Google 地图上的位置相关的项目。所以 Firebase 中的每个 child 都有这样的数据结构。
-item
latitude:"5511231165654"
longitude:"516891812013216"
postalcode: "10013"
cityname: "New York"
在我的应用程序中,数据库中的每个项目都以标记的形式添加到 Google 地图上的相关位置。
现在我认为将所有项目发送给所有用户不是一个好主意。只向用户发送与他们相关的这些项目会更有效。这些项目是与用户在同一区域的项目,在这种情况下,相同区域表示相同的邮政编码。
为了处理这个问题,我构建了这个查询
Query sortedByLocation = myRef.orderByChild("postalcode").equalTo(currentpostalcode);
sortedByLocation.addListenerForSingleValueEvent(
new ValueEventListener() {
.
. do something
.
}
我从 Geocoder 获得了当前邮政编码和城市名称。现在的问题是 Geocoder 有时无法解码邮政编码和 return 空值,但它总是 return 一个城市名称。所以我将查询更改为
Query sortedByLocation = myRef.orderByChild("cityname").equalTo(currentcity);
那么我如何结合这两个查询呢?我想做这样的事情:
is postalcode == null than check for cityname
另一个问题是,是否可以在需要时手动检索数据?
假设用户启动应用程序,应用程序现在获取与用户在同一区域的所有项目,但现在用户离开该区域并进入另一个区域。
如何在不重启应用程序的情况下触发检索这个新区域的新数据?
Firebase 查询只能包含一个 sort/filter 条件。
有时您可以将多个值组合成一个 属性 以获得您想要的行为。例如,请在此处查看我的回答:Query based on multiple where clauses in firebase
但总的来说,听起来您最好还是使用 GeoFire, which uses GeoHashes (a way of combining longitude and latitude into a single property) to allow filtering items based on their distance to a point. Note that at this moment, the updated version of GeoFire for Java 仍在进行中。
我有一个 Firebase 实时数据库,其中包含一组与 Google 地图上的位置相关的项目。所以 Firebase 中的每个 child 都有这样的数据结构。
-item
latitude:"5511231165654"
longitude:"516891812013216"
postalcode: "10013"
cityname: "New York"
在我的应用程序中,数据库中的每个项目都以标记的形式添加到 Google 地图上的相关位置。 现在我认为将所有项目发送给所有用户不是一个好主意。只向用户发送与他们相关的这些项目会更有效。这些项目是与用户在同一区域的项目,在这种情况下,相同区域表示相同的邮政编码。
为了处理这个问题,我构建了这个查询
Query sortedByLocation = myRef.orderByChild("postalcode").equalTo(currentpostalcode);
sortedByLocation.addListenerForSingleValueEvent(
new ValueEventListener() {
.
. do something
.
}
我从 Geocoder 获得了当前邮政编码和城市名称。现在的问题是 Geocoder 有时无法解码邮政编码和 return 空值,但它总是 return 一个城市名称。所以我将查询更改为
Query sortedByLocation = myRef.orderByChild("cityname").equalTo(currentcity);
那么我如何结合这两个查询呢?我想做这样的事情:
is postalcode == null than check for cityname
另一个问题是,是否可以在需要时手动检索数据?
假设用户启动应用程序,应用程序现在获取与用户在同一区域的所有项目,但现在用户离开该区域并进入另一个区域。
如何在不重启应用程序的情况下触发检索这个新区域的新数据?
Firebase 查询只能包含一个 sort/filter 条件。
有时您可以将多个值组合成一个 属性 以获得您想要的行为。例如,请在此处查看我的回答:Query based on multiple where clauses in firebase
但总的来说,听起来您最好还是使用 GeoFire, which uses GeoHashes (a way of combining longitude and latitude into a single property) to allow filtering items based on their distance to a point. Note that at this moment, the updated version of GeoFire for Java 仍在进行中。