我已经创建了一个应用程序(react-native)来存储用户配置文件(年龄、性别、在线状态、经度/经度等)。在google firebase实时数据库中。然后,我使用GeoFire函数来查找在给定coord的特定半径内的所有用户,然后对这些配置文件进行过滤(即只查找X年龄范围内的在线男性),最后将其减少到最接近的100个配置文件。这是在一个firebase函数中完成的,并返回给用户的手机,所以用户将下载的最多是100个用户,这对于应用程序来说是可以接受的。
我的问题是,随着应用程序的扩展,半径内可能有10,000个用户,因此GeoFire查询获取所有10,000个用户的关键字,然后我必须找到这10,000个用户的配置文件信息,然后根据逻辑进行过滤,然后将其减少到最接近的100。现在,这需要大量的时间。
我觉得如果我去AWS上的传统关系数据库,我可以在第一次数据拉取时添加一个where子句,并在一个查询中进行过滤和所有事情。
任何关于解决这个问题的最好方法的帮助,我要么是不正确地使用了firebase,要么是用错了方法。
谢谢。
发布于 2019-02-06 21:33:39
您可以使用带有limitToLast(100)方法的firebase.database查询您的数据库,以限制您的查询,就像在docs中一样,如下所示:
var ref = firebase.database().ref("dinosaurs");
ref.orderByChild("height").limitToFirst(100).on("child_added", function(snapshot) {
console.log(snapshot.key);
});
https://stackoverflow.com/questions/54554495
复制相似问题