TypeError: объект 'Reference' не повторяется - PullRequest
0 голосов
/ 20 ноября 2019

кто-нибудь может мне помочь?

Я хочу получить данные из базы данных Firebase Realtime

my main.py :

import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

cred = credentials.Certificate ("serviceAccountKey.json")
firebase_admin.initialize_app (cred, {"databaseURL": "https://myDatabase.firebaseio.com/"})

ref = db.reference ("user")

for u in ref:
     print (ref.get())

и я получаю сообщение об ошибке, подобное этому

Traceback (most recent call last):
   File "main.py", line 10, in <module>
     for u in ref:
TypeError: 'Reference' object is not iterable

Я просто изучаю Firebase с помощью Python. Я надеюсь, что вы можете помочь, спасибо :)

Ответы [ 2 ]

2 голосов
/ 20 ноября 2019

Этот ответ поможет вам самостоятельно отлаживать подобные ошибки в будущем. :) Ошибка говорит вам, что у вас есть «TypeError», первое, что вы, вероятно, должны сделать, это проверить тип ref, выполнив print(type(ref)), это итеративно? Скорее всего нет, поэтому вы получаете ошибку. Следующим шагом должна быть проверка документов в режиме онлайн или локально функций, предоставляемых ref. Вы можете сделать это, запустив новую оболочку, набрав все команды до цикла for и dir(ref). Там вы увидите широкий спектр функций, какие из них кажутся наиболее правдоподобными из имен, которые бы «получали» вам данные? get конечно. Вот и ты. :)

2 голосов
/ 20 ноября 2019

Исходя из вашего кода, вы пытаетесь распечатать данные каждого пользователя под ключом /user в вашей базе данных. Код db.reference("user") возвращает объект, который ссылается на местоположение в вашей базе данных и не содержит никаких данных. Чтобы получить список каждого пользователя, вы должны использовать следующий код:

ref = db.reference("user")

data = ref.get() # get data from db

for u in data # iterate children of data
   print(u)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...