firebase / firebase/firebase-admin-python
Order diff between backend and client with order_by_key()
- Lenguaje dominante
- Python
- Estrellas
- 1.2k
- Forks
- 359
- Merge medio
- 5 d 6 min
- PR fusionados (30 d)
- 2
Descripción
### 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.
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.