我第一個想到的是比較公認的,儘管它需要一些好辦法:)
首先要注意:如果你創建的數據只被用來作爲關係(如userJokes
),最好是隻加簡單值,它不復制整個源數據(jokes
數據),就像這樣:
userJokes: {
randomUserId: {
randomJokeId:true,
anotherRandomJokeId:true
}
awesomeUser: {
randomJokeId:true
}
}
秒注意:如果你想實現兩個功能(喜歡和喜歡),我認爲你應該把它作爲不同的數據。所以它會是userJokeLike
和userJokeFavorite
(或類似的東西)。每個人的結構應與我在第一個註釋中提到的相同。
總之:
每一個笑話數據仍然在他們的源路徑(即內部jokes
),只有它們的ID被複制到新創建的數據路徑(userJokeLike
和userJokeFavorite
)
如果您想搜索帶有編號爲randomUserId
的用戶的笑話,請檢查userJokeLike\randomUserId
。然後從每個笑話ID到達那裏,從源jokes
的路徑中獲取真實數據。
當您想搜索由用戶編號爲randomUserId
的用戶所喜歡的笑話時,基本上可以按上述方法進行操作。
當你要計算的喜好和每一個笑話的最愛,只是用這樣的:
FirebaseDatabase.getInstance().getReference("userJokeLike")
.orderByChild().equalsTo("randomJokeId")
.addListenerForSingleValueEvent(new ValueEventListener() {
... onDataChange(DataSnapshot dataSnapshot) {
int jokeCount = dataSnapshot.getChildrenCount();
}
});
而且你去那裏,希望這有助於。
注:我沒有檢查的最後一個代碼,希望工作:對
編輯:
貌似我沒有誤會:d
上述解決方案是我認爲最好的爲了結構本身。但是如果我們需要簡單而快速的事情,那麼每種情況都會有所不同。我認爲最好的解決辦法,如果你想獲得笑話的喜好和收藏包括(無需創建另一個請求),那麼你的結構應該是這樣的:
jokes: {
randomJokeId: {
// joke data here
likes:{
randomUserId:true,
anotherUserId:true
},
favorites:{
randomUserId:true
}
}
}
它包括likes
和favorite
當你請求jokes
數據。因此,在每個數據中,您只需檢查當前用戶的UID是否存在於likes
和/或favorite
內。而櫃檯會更容易這樣。
快樂編碼:)
我可能錯過了我的問題中的一點。我想在任何社交應用程序的列表中顯示笑話。在顯示笑話的同時,我還想立即顯示喜歡,不喜歡和喜歡的相應圖標,具體取決於用戶已經完成了什麼。就像Instagram的Feed一樣,在已經喜歡的圖像上顯示紅色的心臟。所以,我希望這些數據已經存在,而無需進行新的查詢。這就是爲什麼我提出了第一個解決方案,我將每個笑話都保存在用戶UID密鑰下,並附加了代表喜歡,不喜歡和喜好的信息。 – lagoman
我編輯了我的答案,希望這一次我明白了:D – koceeng