本快速入门将向您展示如何设置 Cloud Firestore、添加数据,然后使用 Java、Node.js 和 Python 的服务器客户端库,在 Firebase 控制台中通过核心操作或流水线操作查询您刚刚添加的数据。
使用这些客户端库设置特权服务器环境,以便全面访问您的数据库。
创建 Cloud Firestore 数据库
如果您还没有 Firebase 项目,请创建一个,具体步骤是:在 Firebase 控制台中,点击添加项目,然后按照屏幕上的说明创建 Firebase 项目或将 Firebase 服务添加到现有 Google Cloud 项目。
在 Firebase 控制台中打开您的项目。在左侧面板中,展开构建,然后选择 Firestore 数据库。
点击创建数据库。
选择企业版作为数据库模式。
选择原生模式下的 Firestore 作为操作模式,该模式支持核心操作和流水线操作。
选择数据库的位置。
为您的 Cloud Firestore Security Rules选择一个初始模式:
- 测试模式
此模式适合刚开始使用移动和 Web 客户端库的用户,但会允许任何人读取和覆盖您的数据。测试完成后,请务必查看保护您的数据部分。
如需开始使用 Web、Apple 平台或 Android SDK,请选择测试模式。
- 生产模式
拒绝来自移动和 Web 客户端的所有读写操作。经过身份验证的应用服务器(Node.js、Python、Java)仍然可以访问您的数据库。
最初的一组 Cloud Firestore Security Rules将应用于您的默认 Cloud Firestore 数据库。如果您为项目创建多个数据库,则可以为每个数据库部署 Cloud Firestore Security Rules。
点击创建。
启用 Cloud Firestore 时,也会在 Cloud API 管理器中启用相应 API。
设置开发环境
将所需的依赖项和客户端库添加到您的应用。
Node.js
-
将 Firebase Admin SDK 添加到您的应用中:
npm install firebase-admin --save
- 按照以下说明在您的环境中使用适当的凭据初始化 Cloud Firestore。
Python
- 将 Firebase Admin SDK 添加到您的 Python 应用中:
pip install --upgrade firebase-admin
- 按照以下说明在您的环境中使用适当的凭据初始化 Cloud Firestore。
Java
- 将 Firebase Admin SDK 添加到您的应用中:
- 使用 Gradle:
implementation 'com.google.firebase:firebase-admin:9.7.0'
- 使用 Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.7.0</version> </dependency>
- 使用 Gradle:
- 按照以下说明在您的环境中使用适当的凭据初始化 Cloud Firestore。
初始化 Cloud Firestore
初始化 Cloud Firestore 的实例:
Node.js
Cloud Firestore SDK 可通过不同的方式初始化,具体取决于您的环境。以下是最常用的一些方法。如需查看完整的参考文档,请参阅初始化 Admin SDK。-
在 Cloud Functions 上初始化
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
在 Google Cloud 上初始化
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
-
在您自己的服务器上初始化
如需在您自己的服务器上(或其他任何 Node.js 环境中)使用 Firebase Admin SDK,请使用一个服务账号。在 Google Cloud 控制台中,转到 IAM 和管理 > 服务账号。生成一个新的私钥并保存该 JSON 文件。然后使用该文件来初始化 SDK:
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
Python
Cloud Firestore SDK 可通过不同的方式初始化,具体取决于您的环境。以下是最常用的一些方法。如需查看完整的参考文档,请参阅初始化 Admin SDK。import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
现有的应用默认凭据也可用来初始化 SDK。
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore.client()
如需在您自己的服务器上使用 Firebase Admin SDK,请使用一个服务账号。
在 Google Cloud 控制台中,转到 IAM 和管理 > 服务账号。生成一个新的私钥并保存该 JSON 文件。然后使用该文件来初始化 SDK:
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore.client()
Java
Cloud Firestore SDK 可通过不同的方式初始化,具体取决于您的环境。以下是最常用的一些方法。如需查看完整的参考文档,请参阅初始化 Admin SDK。import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use the application default credentials GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .setProjectId(projectId) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
如需在您自己的服务器上使用 Firebase Admin SDK,请使用一个服务账号。
在 Google Cloud 控制台中,转到 IAM 和管理 > 服务账号。生成一个新的私钥并保存该 JSON 文件。然后使用该文件来初始化 SDK:
import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use a service account InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json"); GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
使用核心操作添加数据
为了探索用于查询数据的核心操作和流水线操作,请使用核心操作向数据库添加数据。
Cloud Firestore 将数据存储在文档中,而文档存储在集合中。在您首次向文档添加数据时,Cloud Firestore 就会隐式创建集合和文档。您不需要显式创建集合或文档。
使用以下示例代码创建一个新集合和一个新文档。
Node.js
Java
Python
使用核心操作读取数据
使用 Firebase 控制台中的数据查看器可以快速验证您是否已将数据添加到 Cloud Firestore。
您也可以使用“get”方法来检索整个集合。
Node.js
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Java
使用流水线操作读取数据
现在,您可以比较流水线查询体验与核心操作查询体验。
Node.js
const readDataPipeline = db.pipeline() .collection("users"); // Execute the pipeline and handle the result try { const querySnapshot = await readDataPipeline.execute(); querySnapshot.results.forEach((result) => { console.log(`${result.id} => ${result.data()}`); }); } catch (error) { console.error("Error getting documents: ", error); }
Python
pipeline = client.pipeline().collection("users") for result in pipeline.execute(): print(f"{result.id} => {result.data()}")
Java
Pipeline pipeline = firestore.pipeline().collection("users"); ApiFuture<Pipeline.Snapshot> future = pipeline.execute(); for (com.google.cloud.firestore.PipelineResult result : future.get().getResults()) { System.out.println(result.getId() + " => " + result.getData()); } // or, asynchronously pipeline.execute( new ApiStreamObserver<com.google.cloud.firestore.PipelineResult>() { @Override public void onNext(com.google.cloud.firestore.PipelineResult result) { System.out.println(result.getId() + " => " + result.getData()); } @Override public void onError(Throwable t) { System.err.println(t); } @Override public void onCompleted() { System.out.println("done"); } });
后续步骤
通过以下主题深入了解核心操作和流水线操作:
- 请务必熟悉核心操作与流水线操作之间的区别
- 详细了解如何使用核心操作进行查询
- 详细了解如何使用流水线操作进行查询。