firebase / firebase/firebase-admin-python

Order diff between backend and client with order_by_key()

Đang mở
#677 2 bình luận 1 reaction 0 người được giao Xem trên GitHub
api: database
Ngôn ngữ chính
Python
Star
1.2k
Fork
359
Merge trung bình
5 ngày 6 phút
Pull request đã merge (30 ngày)
2

Mô tả

### Describe your environment

* Operating System version: macOS 12.4
* Firebase SDK version: 6.1.0
* Firebase Product: database
* Python version: 3.7.9
* Pip version: 21.3.1

### Describe the problem

When using order_by_key(), the order of the returned `OrderedDict` is not the same as the database making pagination very difficult

#### Steps to reproduce:

- Create a collection with this json in "/test" for example :
```
{
"123": {"myValue": true},
"100001": {"myValue": true},
"100002": {"myValue": true},
"100003": {"myValue": true},
"100004": {"myValue": true},
"100005": {"myValue": true}
}
```
- Query it with :
```python
db.reference("/test").order_by_key().limit_to_first(4).get()
```
- Comparison :

Current :
```
OrderedDict([('100001', {'myValue': True}), ('100002', {'myValue': True}), ('100003', {'myValue': True}), ('123', {'myValue': True})])
```
Expected :
```
OrderedDict([('123', {'myValue': True}), ('100001', {'myValue': True}), ('100002', {'myValue': True}), ('100003', {'myValue': True})])
```

#### Comments

So according to this [link](https://firebase.google.com/docs/database/admin/retrieve-data#orderbykey), order should be the same as the collection but in the corresponding `OrderedDict` the order is not the same so if you want make a pagination strategy, it just loops as getting the last key of the `OrderedDict` returned and using it in `start_at` will return the same result over and over again.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.