Pyrebase order_by_child 未订购数据

Pyrebase order_by_child not ordering data

我正在使用 python 和 Firebase 作为后端开发桌面应用程序。

由于数据可能比较多,所以需要通过参数“Timestamp”对数据进行分页排序。所以我正在使用这个:

raw_data = db.child("UploadedImages").order_by_child("Timestamp").start_at(self.start_from).limit_to_first(3).get()

(“self.start_from”为double,表示最后接收到的对象的时间戳)

但是返回的数据没有排序,是从第一个索引开始的。 奇怪的是,它在另一个结构完全相同但数据较少的 firebase 项目上工作得很好。

我也跳过了分页并尝试了这段代码,结果是一样的:

raw_data = db.child("UploadedImages").order_by_child("Timestamp").get()

获取数据后,我将其作为字典存储在另一个变量中,如下所示:

parsed = json.loads(json.dumps(raw_data.val()))

然后迭代“parsed”变量并将数据解析到我的图像class:

for i in parsed:
    image = models.Image(parsed[i])

这是我在 Firebase 中的数据示例: my Firebase data structure

JSON 对象中的键根据定义是无序的,因此当您调用 raw_data.val() 时,任何有关排序的信息都会丢失。

出于这个原因,order_by_child 调用对于过滤服务器上的数据很有用,但是(在这种情况下)以特定顺序实际获取数据没有用。检索到数据后,您需要在应用程序代码中重新排序数据。