2017-04-17 44 views
0

我创建了Firebase数据库,并使用Push()方法将数据保存到数据库中。这工作正常。但是我面临的这个问题是当我检索数据时。由于Push()通过创建一个临时密钥来工作,我不知道如何进入该树的子进程以使用orderByValue()进行排序。我的JSON看起来是这样的:从Firebase取回

{ 
    "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

您是否尝试过'var ref = reference.child('videos/videoId1')。orderByChild('time')'? –

回答

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 
     } 
    } 
    } 
} 

有了可以查询的基里尔建议:

ref.child('videos/videoId1').orderByChild('time')...