2017-02-12 63 views
2

我是Firebase的忠實粉絲,這就是我決定在當前應用中使用它的原因,但是我不得不知道它是否能夠支持我的需求。使用「Firebase」+「Geofire」構建「Tinder」應用程序,它甚至有可能嗎?

應用程序功能與「Tinder」應用程序相同,您可以根據人的性別,位置和年齡輕掃/不像人。

我注意到沒有理由每次只能有一個以上的查詢,所以我將每個人都保存在一個基於其性別的路徑中,而「關鍵」是一個「按鍵」。 我使用的是「推鍵」,因爲它是索引的,所以用戶不會兩次滑動同一個用戶。 (滑動操作會從加盟體系的第一個用戶開始)

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」只得到了靠近我的人,的一種方式,但它必須在自己的「鑰匙」上工作。 而且我無法通過位置鍵保存用戶,因爲這樣用戶就不會被索引(所以用戶只會在每個用戶上刷一次)。

中的地理位置希望分貝是這個樣子:

「location」 
    userObject 
「location」 
    userObject 
「location」 
    userObject 
「location」 
    userObject 

讓所有用戶的快照,以及它們之間的迭代是不是一種選擇,因爲他們也許有很多用戶。

這是可以用firebase實現的東西嗎?我不是以正確的方式構建數據?如果是這樣,我該怎麼辦?

+2

Downvoter,可以解釋爲什麼而不是隻是downvoting?謝謝。 – MCMatan

+3

我的猜測是,下來的選民認爲這個問題很模糊;什麼是實際問題? Geofire的設計是爲了滿足您的需求 - 問題在於您實施的Firebase結構;沒有理由將所有女性和所有男性一起分組,您的GeoFire數據在哪裏?你如何將用戶的位置關聯起來?所有這些都需要成爲你的結構的一部分,你的查詢將自然地過濾掉這個用戶所在區域之外的用戶。 – Jay

+0

@Jay感謝您的迴應,我編輯了我的問題,以更準確地說明問題是什麼,它是關於結構的。 – MCMatan

回答

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 

通過此結構,您可以查詢所有男性,女性和/或用戶半徑內的所有人(每個問題)。

通過一些代碼,您可以查詢用戶範圍內的所有女性,按年齡或任何人命名的格雷西。

+0

嗨,感謝您的回覆,並且我找到了這個:https:/ /groups.google.com/forum/#!msg/firebase-talk/AKj-bNa3igo/mA-VUIFHAAAJ這基本上是由firebase說的,沒有辦法查詢數據庫,而不會拋出所有用戶在當前區域客戶端過濾它們..我的問題是,他們可能有5000個用戶它幾公里的面積,我太多的過程讓客戶端循環其中每一個。 – MCMatan

+1

@MCMatan有很多方法做你想做的事。例如,您可以爲男性和女性設置一個geoFire節點。您可以通過結合性別,uid和年齡來構造geofire節點名稱(鍵),如男性:uid_0:35。查看[Filtering Geofire](http://stackoverflow.com/questions/34347571/filtering-results-with-geofire-firebase?lq=1)以及ZenPylon的答案。還有[This](https://github.com/firebase/geofire-js/issues/40)以及jwngr的回答。最後,迭代5000是非常快的,所以不應該是一個劫持。 – Jay

+0

@MCMatan請注意,儘管Jacob說的是準確的 - 但有多種方法可以查詢Firebase的多個參數。 – Jay

相關問題