2016-12-12 88 views
0

我發現Firebase數據庫sample非常有幫助,但我注意到一些讓我擔心的事情。在Firebase數據庫中嵌套星星

我的意思是在這個例子中,用戶可以給帖子加上明星,就像Facebook上的「喜歡它」一樣。在提供的示例它們嵌套成分後,所以我們有這樣樣品物體:

"post_id" : { 
     "author": "username", 
     "body": "Some content", 
     "starCount": 1 
     "stars" : { 
       "user_id_who_gave_star" : "true" 
     } 
     "title": "Some title", 
     "uid": "author_id" 
} 

這樣的解決方案具有許多優點,例如像我們可以檢查是否已經給星和隱藏或更改圖標,或者我們可以通過一個事務來更改「starCount」並將下一個值添加到「stars」。

但問題是當我們有很大的應用程序和1000個用戶給了明星,所以每次我們下載發佈數據時,我們都下載了1000個userIds,這可能不是最好的解決方案。

問題

我的問題是,什麼是這樣的應用程序的最佳做法,並有專人進行測試是如何工作的火力地堡在這種情況呢?

回答

1

這裏firebaser

當寫我們的文檔的例子中,我們總是要平衡需要有足夠的背景下,保持足夠的例子小,並按照我們自己的最佳實踐。

這確實是我們違反了我們自己的最佳實踐之一「不嵌套數據」的情況之一。正如你所說:這意味着用戶下載一篇文章,獲取喜歡該文章的用戶的所有UID。

隨着應用程序使用規模的擴大,這可能會成爲一個問題。如果是這樣的話你的應用程序,你應該建模爲一個單獨的頂級節點「誰upvoted後用戶」:

"posts": { 
    "post_id" : { 
     "author": "username", 
     "body": "Some content", 
     "starCount": 1 
     "title": "Some title", 
     "uid": "author_id" 
    } 
}, 
"upvotes": { 
    "post_id" : { 
     "user_id_who_gave_star" : "true" 
    } 
} 
+0

但現在,如果用戶給明星特定文章中,我們不能立即顯示,有沒有其他解決方案? – ThirdMartian