我是Firebase的忠实粉丝,这就是我决定在我当前的应用中使用它的原因,但我已经到了一个我不再知道它是否可以支持的地步我的需要。
应用功能与" Tinder"相同应用程序,你可以根据他们的性别,位置和年龄在人们身上轻扫/不同。
我注意到,没有理由一次只能有多个查询,所以我会根据每个人的性别以及"键"来保存每个人的路径。是一个"按键" firebase生成。 我使用"推送键",因为它已被编入索引,因此用户不会刷两次相同的用户。 (滑动将从加入系统的第一个用户开始)
let lookForGender = "female"
//swipingIndex is the last user index I've swiped.
let baseRef = firebaseApp.database().ref("lookForGender")
.startAt(null, currentUser.swipingIndex);
baseRef.once('value', function (snapshot) {
UsersFeedService.updateState(snapshot);
})
//DB looks like:
"female"
someIndexKey
userObject
someIndexKey
userObject
"male"
someIndexKey
userObject
someIndexKey
userObject
这很好用,但现在我正在寻找一种只让我靠近的人的方式,因为我已经添加了“GeoFire”,但它必须依靠自己的“关键”。 我无法按位置键保存用户,因为它们不会被编入索引(因此用户只会在每个用户上刷一次)。
Geo位置希望db看起来像这样:
“location”
userObject
“location”
userObject
“location”
userObject
“location”
userObject
获取所有用户的快照并在它们之间进行迭代不是一种选择,因为它们可能是很多用户。
这可以用firebase实现吗?我没有以正确的方式构建数据?如果是这样,我该怎么办?
答案 0 :(得分:2)
firebase中典型的设计模式怎么样?
users
uid_0
gender: "male"
name: "George"
age: "35"
uid_1
gender: "female"
name: "Gracie"
age: "32"
_geofire
uid_0:
g: "asdaseeefef"
l:
0: 52.2101515118818
1: -0.3215188181881
uid_1:
g: "oposooksok"
l:
0: 50.1234567898788
1: -0.8789999595988
使用此结构,您可以查询用户半径范围内的所有男性,女性和/或所有人(根据问题)。
使用一些代码,您可以查询用户范围内的所有女性,按年龄划分的人或任何名为Gracie的人。