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
}
添加回答
举报
