2016-11-23 73 views
0

我正在研究一個應用程序,該應用程序將使用用戶的位置並通過URL中的郵政編碼執行Web請求。這很快,通常需要1-3秒。我即將發佈該應用程序,但閱讀了使用條款,無法使用他們的服務與我的應用程序。自從我下載了一個77k的郵編電子表格,將其轉換爲JSON並將其上傳到Firebase。我目前在我的應用中查詢Firebase以搜索郵政編碼,但現在需要大約10-15秒。我的代碼如下:查詢Firebase的最有效方式iOS

  • 「位置」
    • 「1」
      • ZIP:: 「12345」
      • 如下

        func firebaseSearch(zipCode: String) { 
            let conditionRef = FIRDatabase.database().reference().child("locations") 
        
            let query = conditionRef.queryOrderedByChild("zip").queryEqualToValue(zipCode) 
        
            query.observeEventType(.Value, withBlock: { snapshot in 
        
             for child in snapshot.children { 
              print(child.value["state"]) 
        
             } 
        
            }) 
        
            } 
        

        我的火力被構造狀態:「XX」

    • 「2」
      • ZIP: 「12345」
      • 狀態: 「XX」

我試圖考慮我可如何構造的火力地堡是更有效率的,比如讓州成爲家長,並在裏面輸入孩子。我想上傳所有條目作爲郵政編碼;不過,我的電子表格有太多重複的代碼,並且我知道firebase不允許重複。有沒有更有效的方法來查詢Firebase?如果我從第一個郵政編碼開始輸入號碼(當前從1開始到77k),那麼我會從郵政編碼中查詢+/-值,然後過濾這些結果?我唯一的擔心是看到最後一個郵政編碼,這個郵政編號與實際郵政編碼相差約20k。我很欣賞任何提示/建議,謝謝!

回答

0

Firebase建議避免嵌套數據,並且據我所知,您的結構很好,因爲當您在某個位置獲取數據時,它也會檢索其所有子節點。你如何在你的應用中顯示你的數據?

你可能會利用分頁查詢25個項目,然後加載下25個,等等?

query.limitToLast(25).observeEventType(.Value, withBlock: { snapshot in ... 
+0

感謝您的迴應!我將如何使用分頁?我認爲limitToLast只使用了最後的25個條目?雖然我是新的firebase,所以我不太確定。再次感謝! – JD2017

+0

我建議你看看這篇文章的分頁(http://stackoverflow.com/questions/37144030/how-do-you-properly-order-data-from-firebase-chronologically),因爲它幫助了我,以及。 – waseefakhtar