# #python-3.x #google-cloud-firestore
Вопрос:
Должно быть, я делаю что-то не так
Я пытаюсь просмотреть все документы в коллекции и добавить содержимое в словарь.
Я добавил данные в словарь, но мое намерение состояло в том, чтобы просмотреть все документы:
firebase_admin.initialize_app(cred)
db = firestore.client()
blog_col = db.collection(u'blog')
class Art_cont:
def __init__(self,title,date,link):
self.title = title
self.date = date
self.link = link
def getLast4():
query = blog_col.order_by("date").limit_to_last(4).get()
for doc in query: #Need to find a way to loop through all docs, this doesn't work
db_title=doc.to_dict()["title"]
db_date=doc.to_dict()["date"]
db_link=doc.to_dict()["link"]
content1=Art_cont(db_title,db_date,db_link)
#here wrap them up with html and return them to app
print(content1.title,content1.date,content1.link)
Когда я запускаю этот код, он выдает мне только первое содержимое документа:
По сравнению с другими документами, имеющими ту же структуру:
Буду признателен за любой совет.
Ответ №1:
Предполагая, что запрос является объектом вашей модели, напишите db_title = doc.your_attribute_name.to_dict()['title']
и сделайте то же самое для других атрибутов.
Ответ №2:
Ну, у меня почти получилось, вместо этого я создал функцию:
def getlist(x):
query = blog_col.order_by("date").limit_to_last(4).get()
docs=[]
for doc in query:
docs.append(doc)
docnum=docs[x]
db_title=docnum.to_dict()["title"]
db_date=docnum.to_dict()["date"]
db_link=docnum.to_dict()["link"]
content=Art_cont(db_title,db_date,db_link)
return content
print(getlist(0).title)
print(getlist(1).title)
etc...
Надеюсь, это поможет кому-нибудь в подобной ситуации.