Search code examples
python-3.xfirebase-realtime-databasepyrebase

Firebase Realtime Database equal_to() method gets the whole document instead of the parent only


I have this structure:

-User:
     -user1:
              -name : cycy
              -email: [email protected]

What I intend to do is know what parent does the input email contains. for example if my input email is [email protected], I should be able to output "user1". Here is my code:

hey = db.child("User").order_by_child("email").equal_to("[email protected]").get()
print(hey.val())

My problem with this code is that it outputs everything and not the parent "user1" only OrderedDict([('user1', {'name: cycy, email: [email protected]})])

How can i modify this so that it only gives the parent "user1"

Thank you!


Solution

  • Firebase Realtime Database queries always give a list of results, as there may be multiple child nodes that match the query. Even when there's only one result, you get a list of that one result. There is no way to change that behavior.

    You will have to loop over the results, like shown in the Pyrebase documentation on handling a list of results. Based on that, your code would look something like:

    for user in hey.each():
        print(user.key())
        print(user.val())