Firebase查询不允许对多个属性进行排序?

时间:2017-06-10 08:06:16

标签: objective-c firebase firebase-realtime-database

我试图从firebase获取一些数据。在我的对象中,我有

Recent
   |_UniversitId
       |_objectiId1
       |  |_ userId:1
       |  |_ timestamp:143242344
       |_objectiId2
          |_ userId:1
          |_ timestamp:143243222

我的查询路径是http://firbasedbname.com/Recent/UniversityId。我需要获取userId id等于1的条目,并按时间戳设置。我尝试了以下内容,

FIRDatabaseQuery *query = [[firebase queryOrderedByChild:@"userId"] queryEqualToValue:@"1"];

这正确地提取了我的用户。但是有没有办法按时间戳订购此套装。为此,我尝试了另一个queryOrderedByChild。但它说它只能使用一次。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

queryOrderedByChild只能使用一次。 解决方法是

   |_objectiId1
   |  |_ userId:1
   |  |_ timestamp:143242344
   |  |_ userId_timestamp:1_143242344
   |_objectiId2
      |_ userId:1
      |_ timestamp:143243222
      |_ userId_timestamp:1_143243222

然后尝试:

FIRDatabaseQuery *query = [[firebase queryOrderedByChild:@"userId_timestamp"] queryEqualToValue:@"1_143242344"];

查看https://youtu.be/sKFLI5FOOHs?t=541

<小时/> 另一种方法是:

 |_objectiId1
       |_ userId1:
       |      |_ objectId11:143242344
       |      |_ objectId12:143243222
       |_ userId2:    

然后 查询路径为http://firbasedbname.com/Recent/UniversityId/userId1

然后按值排序