Firebase查询未返回正确的数据

时间:2018-09-23 23:47:58

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

我在Firebase中有以下数据:

- Info/
  -2018-09-23-13-38-00-WhyNewYo
  -2018-09-23-14-04-57-PompeoWe
  -2018-09-23-14-10-32-FocusonE
  -2018-09-23-14-39-00-SenPatty
  -2018-09-23-14-40-30-Rebelatt
  -2018-09-23-14-57-33-Piratesa

每个条目都是在不同的时间创建的,但是我是根据特定标题命名的,因此我知道哪个是最新的,当我在Firebase控制台中自动查看它们时,它将按字母顺序排列。

当我想查询最新的2个数据时(根据上面显示的顺序查询最后2个数据),但是Firebase似乎返回了不正确的数据,我正在使用以下代码:

FIRDatabaseReference *dataRef = [[FIRDatabase database] reference];
dataRef = [dataRef child:[NSString stringWithFormat:@"/info"]];
[[[dataRef queryOrderedByValue] queryLimitedToLast:2] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
    NSDictionary *infoFromFirebase= snapshot.value;

1 个答案:

答案 0 :(得分:0)

查询并观察FIRDataEventTypeValue时,会在单个快照中获得所有匹配的节点。如果调用snapshot.value,则数据将转换为字典,并且匹配节点顺序的信息也会丢失。

要维持节点的顺序,请确保使用snapshot遍历for (FIRDataSnapshot* child in snapshot.children) { … }的子代。