3 回答

TA貢獻2037條經驗 獲得超6個贊
這在一定程度上取決于您在 RealtimeDatabase 中實際設置數據模型的方式。在這種情況下,您嘗試排序的數據沒有一致的路徑(似乎不同的投票類型)。
如果你有類似的東西:
CountLikes: [ // collection
docId: { // document
typeOfVote: { // map name
"votes": number // vote count
}
}
]
如果“投票”與“typeOfVote”分開,您嘗試按孩子訂購的方式將成為可能,因為現在您無法通過潛在的通配符按孩子訂購(例如,獲得比“技術”更深的級別)。
CountLikes: [
docId: {
"votes": number,
"type": typeOfVote
}
]
有了這個,您的 orderByChild “投票”可能會起作用:)
FirebaseDatabase.getInstance().getReference("CountLikes/").orderByChild("votes")

TA貢獻1801條經驗 獲得超16個贊
您知道“生物和生態”等屬性的所有可能值嗎?然后你可以只用一個 for 循環并選擇 ....gerReference("CountLikes").orderbychild(property[i]+"/votes").....
我知道這是一種奇怪的方式,但是正如您所說,您不能更改結構,即使我建議您在數據庫中保留另一個數據集以獲取屬性值

TA貢獻1869條經驗 獲得超4個贊
Firebase 實時數據庫可以根據屬性查詢位置的子節點,只要該屬性位于具有固定路徑的已知位置即可。
在您的情況下,子節點不在固定路徑上(因為TechnologyandBiological and Ecological鍵不固定),因此您當前的數據結構無法進行此查詢。
要允許查詢,請重組數據以將其轉換為平面列表。例如,這可能有效:
"45" : {
"Category": "Biological and Ecological",
"Votes" : 1
}
"567" : {
"Category": "Technology",
"Votes" : 2
},
"620" : {
"Category": "Technology",
"Votes" : 1
},
"702" : {
"Category": "Social and Behavioral",
"Votes" : 1
}
添加回答
舉報