firebase / firebase/firebase-admin-python
[FR] Can we add `shallow` support to `Query.get` like `Reference.get`...?
- Dominant language
- Python
- Stars
- 1.2k
- Forks
- 359
- Avg merge
- 5d 6m
- Merged PRs (30d)
- 2
Description
**Is your feature request related to a problem? Please describe.**
The addition of the `shallow` parameter when retrieving data was requested in #61 and accepted in #109, but this only added the `shallow` param to `Reference.get`. I have a `Query` (`order_by_child`) that I would like to `shallow`, but `Query.get` doesn't support the param.
**Describe the solution you'd like**
I don't see any limitation to having both the `orderByChild` and `shallow` parameters in [the docs for RTDB via Rest](https://firebase.google.com/docs/database/rest/retrieve-data), but admittedly I haven't tried it yet. If there are none, can we add `shallow` to `Query.get`, too?
**Describe alternatives you've considered**
None exist, as far as I know, if I need to select a subset of paths filtered by criteria but only want the keys of those refs. Open to suggestion otherwise...
**Additional context**
_Expected_
```python
>>> just_ids_please = (firebase_admin.db
... .reference("/path/to/resource")
... .order_by_child("some/child")
... .equal_to("some_value")
...).get(shallow=True)
...
>>>
```
_Actual_
```python
>>> just_ids_please = (firebase_admin.db
... .reference("/path/to/resource")
... .order_by_child("some/child")
... .equal_to("some_value")
...).get(shallow=True)
...
TypeError: get() got an unexpected keyword argument 'shallow'
```
Contributor guide
Research direction
Start by comparing the Query.get and Reference.get entry points against the Firebase Realtime Database REST documentation linked in the issue. Confirm whether shallow can be combined with order_by_child and equal_to, then make Query.get accept the parameter and verify that the shown filtered query returns only reference keys.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- firebase, python
- Domain
- database
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100