我创建了一个Firebase数据库,我正在使用Push()方法将数据保存到数据库中。这很好用。但我面临的这个问题是我检索数据的时候。由于Push()通过创建临时键来工作,我不知道如何使用orderByValue()进入该树的子节点以执行排序。我的JSON看起来像这样:
{
"videos" : {
"videoId1" : {
"-KhxlA5-yIHYq-7PQC84" : "{\"url\":\"testUrl1\",\"title\":\"test1\",\"x\":-3.9357306957244875,\"y\":6.528204441070557,\"z\":2.5558924674987795,\"time\":7982.197021484375}",
"-KhxlAEpJp30xF5n6kc5" : "{\"url\":\"testUrl2\",\"title\":\"test2\",\"x\":4.0330400466918949,\"y\":6.52820348739624,\"z\":2.3994064331054689,\"time\":2637.8599853515625}",
"-KhxlAPyaGEI7AxFssG_" : "{\"url\":\"testUrl3\",\"title\":\"test3\",\"x\":-3.446043014526367,\"y\":6.52820348739624,\"z\":-3.1854910850524904,\"time\":5350.770263671875}"
}
}
}
我的要求是我需要在检索数据时根据time
键对其进行排序。
我可以到达videoId1
树,但不知道如何过去。 (使用reference.Child ("videos").Child (videoUrl)
)
感谢。
答案 0 :(得分:1)
您为videoId1
下的每个孩子存储字符串值。没有办法在该字符串内有用地查询。
如果要在这些子项下查询,请确保将数据存储为JSON,以便总树变为:
{
"videos": {
"videoId1": {
"-KhxlA5-yIHYq-7PQC84": {
"url": "testUrl1",
"title": "test1",
"x": -3.9357306957244875,
"y": 6.528204441070557,
"z": 2.5558924674987795,
"time": 7982.197021484375
}
",
"-KhxlAEpJp30xF5n6kc5": {
"url": "testUrl2",
"title": "test2",
"x": 4.0330400466918949,
"y": 6.52820348739624,
"z": 2.3994064331054689,
"time": 2637.8599853515625
}
",
"-KhxlAPyaGEI7AxFssG_": {
"url": "testUrl3",
"title": "test3",
"x": -3.446043014526367,
"y": 6.52820348739624,
"z": -3.1854910850524904,
"time": 5350.770263671875
}
}
}
}
有了这个,您可以像Kirill建议的那样进行查询:
ref.child('videos/videoId1').orderByChild('time')...