firebase / firebase/firebase-admin-python

Order diff between backend and client with order_by_key()

Abierto
#677 2 comentarios 1 reacción 0 asignados Ver en GitHub
api: database
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

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.