我正在使用 Firebase 并使用以下代码从 Firestore 设置/检索文档:
import firebase_admin
from firebase_admin import credentials, firestore
cred = credentials.ApplicationDefault()
firebase_admin.initialize_app(cred, options={"projectId": "huq-jimbo"})
firestore_client = firestore.client()
doc = firestore_client.collection(f"example_collection").document("data")
print(doc)
我只能访问
(default)
数据库,并且看不到任何打开不同数据库的方法。
查看文档(例如
https://firebase.google.com/docs/firestore/quickstart
)似乎没有
database
参数
firestore.client()
我怎样才能实现这一目标?
在 Google Firestore 中, 没有“数据库” 的概念,至少不像你在处理传统的关系型数据库管理系统(如 MySQL 或 PostgreSQL)时那样。Firestore 是一个 NoSQL 文档数据库,它以完全不同的方式组织数据。
你所指的
(default)
实际上是指你的
Firebase 项目
,而不是数据库。每个 Firebase 项目在 Firestore 中都有一个默认的数据库实例。你无法在一个项目中创建多个 Firestore 数据库。
你当前使用
firestore.client()
创建的客户端
已经连接到了你项目中的默认 Firestore 实例
。
现在,让我们来谈谈你可能想要实现的目标:
如果你想在不同的 Firebase 项目中访问 Firestore 数据,你需要使用该项目的凭据初始化一个新的 Firebase 应用:
import firebase_admin
from firebase_admin import credentials, firestore
# 项目 1
cred_1 = credentials.ApplicationDefault()
firebase_admin.initialize_app(cred_1, name="project1", options={"projectId": "project1-id"})
firestore_client_1 = firestore.client(app="project1")
# 项目 2
cred_2 = credentials.Certificate("path/to/project2-credentials.json")
firebase_admin.initialize_app(cred_2, name="project2", options={"projectId": "project2-id"})
firestore_client_2 = firestore.client(app="project2")
# 现在你可以使用 firestore_client_1 和 firestore_client_2 分别访问两个项目的 Firestore 数据
如果你想在同一个 Firebase 项目中组织你的数据,你应该使用集合和子集合:
Firestore 使用集合和文档来组织数据。你可以将集合视为文档的容器。你可以在集合中创建多个文档,也可以在文档中嵌套子集合来创建层次结构。
例如,你可以创建一个名为
customers
的集合,并在其中为每个客户创建一个文档。然后,你可以在每个客户文档中创建一个名为
orders
的子集合来存储他们的订单。
# 在 "customers" 集合中创建一个名为 "customer1" 的文档
customer_ref = firestore_client.collection("customers").document("customer1")
# 在 "customer1" 文档中创建一个名为 "orders" 的子集合
orders_ref = customer_ref.collection("orders")
通过使用集合、子集合和文档,你可以在 Firestore 中有效地组织和管理你的数据,而无需使用多个数据库。
标签:python,firebase,google-cloud-platform,google-cloud-firestore From: 77571877