firebase / firebase/firebase-admin-python

Order diff between backend and client with order_by_key()

Offen
#677 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
api: database
Vorherrschende Sprache
Python
Sterne
1.2k
Forks
359
Ø Merge
5 T. 6 Min.
Gemergte PRs (30 T.)
2

Beschreibung

### 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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.