Google Firestore 是 Firebase 提供的云端 NoSQL 数据库,专为存储 JSON 文档设计,非常适合构建可扩展的实时应用。然而,直接通过 google-cloud-firestore 操作 Firestore 并不总是很方便,尤其是当你习惯了面向对象和类型化代码的开发方式时。
FireO —— Google Firestore 的 ORM 库 —— 是一款 Python 库,它通过提供类似流行 ORM 的接口,简化了 Firestore 的操作。模型、字段、数据验证、关联关系 —— 这些在 Firebase 世界中现在都已触手可及。
什么是 FireO?为什么要使用它?
FireO(Firebase ORM)是用 Python 编写的 Google Firestore 对象关系映射库。它允许开发者像操作传统关系型数据库一样使用 Firestore,通过类和对象代替直接调用 API 查询。
FireO 的主要优势:
- 使用简单:直观的语法,类似 Django ORM
- 字段类型化:严格类型化,并自动进行数据验证
- 数据验证:保存前内置数据检查
- 关联支持:处理引用字段和嵌套结构
- 元数据自动管理:自动生成时间戳
- 数据迁移:简化数据结构管理
安装与配置 FireO
安装库
pip install fireo
配置身份验证
要使用 Firestore,需要通过服务账号进行身份验证:
- 在 Firebase 控制台中创建服务账号
- 下载 JSON 密钥文件
- 在环境变量中指定密钥路径:
export GOOGLE_APPLICATION_CREDENTIALS="path/to/your-key.json"
替代连接配置
from fireo import connection
# 通过文件连接
connection(from_file="path/to/serviceAccountKey.json")
# 通过环境变量连接
connection()
Firestore 基础与文档型模型
Firestore 数据结构
Firestore 按以下层级存储数据:
- 数据库 → 集合 → 文档 → 字段
- 文档 可以包含子集合
- 字段 支持多种类型:字符串、数字、数组、对象等
NoSQL 的特点
Firestore 是无模式数据库,这意味着:
- 同一集合中的文档可以有不同的字段
- 无需预先定义数据结构
- 数据结构修改灵活
FireO 在此灵活性之上增加了结构化和数据验证层。
在 FireO 中创建模型
基础模型
from fireo.models import Model
from fireo.fields import TextField, NumberField, BooleanField
class User(Model):
name = TextField(required=True, max_length=100)
age = NumberField(required=True)
is_active = BooleanField(default=True)
class Meta:
collection_name = "users" # 可选,默认使用类名
带验证的扩展模型
from fireo.fields import EmailField, DateTimeField, ListField
from datetime import datetime
class Profile(Model):
user_id = TextField(required=True)
email = EmailField(required=True)
created_at = DateTimeField(default=datetime.now)
tags = ListField