You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask+Firestore遍历集合文档存入字典仅返回单条数据如何解决

问题原因

  • 循环内的content1变量每次迭代都会被新生成的Art_cont实例覆盖,循环结束后仅保留最后一次循环的实例,因此打印只能输出1条数据。
  • 没有提前声明容器存储所有生成的实例,其余3条实例生成后没有被引用,直接被丢弃。

解决代码

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()
    # 提前初始化空列表存储所有实例
    art_list = []
    for doc in query:
        doc_dict = doc.to_dict()
        # 避免重复调用to_dict()提升效率
        db_title = doc_dict["title"]
        db_date = doc_dict["date"]
        db_link = doc_dict["link"]
        content = Art_cont(db_title, db_date, db_link)
        # 将实例追加到列表保存
        art_list.append(content)
    # 遍历输出所有实例内容
    for art in art_list:
        print(art.title, art.date, art.link)
    # 后续需要封装HTML直接返回art_list即可
    return art_list

优化说明

原代码中每次取值都调用了一次doc.to_dict(),同一文档重复调用三次会产生不必要的性能损耗,修改后先把文档转成字典存为临时变量,再从变量中取值即可。

内容的提问来源于stack exchange,提问作者Pancho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:39:03