建立一个" Tinder"应用" Firebase" +" Geofire",它甚至可能吗?

时间:2017-02-12 16:19:40

标签: javascript reactjs firebase react-native geofire

我是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实现吗?我没有以正确的方式构建数据?如果是这样,我该怎么办?

1 个答案:

答案 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的人。