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
调用对于过滤服务器上的数据很有用,但是(在这种情况下)以特定顺序实际获取数据没有用。检索到数据后,您需要在应用程序代码中重新排序数据。
我正在使用 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
调用对于过滤服务器上的数据很有用,但是(在这种情况下)以特定顺序实际获取数据没有用。检索到数据后,您需要在应用程序代码中重新排序数据。