本快速入門導覽課程說明如何設定 Cloud Firestore、新增廣告資料,然後使用 Core 作業或 Pipeline 作業,透過 Java、Node.js 和 Python 的伺服器用戶端程式庫,在 Firebase 控制台中查詢剛新增的資料。
使用這些用戶端程式庫,設定具有資料庫完整存取權的特殊權限伺服器環境。
建立 Cloud Firestore 資料庫
如果您尚未建立 Firebase 專案,請前往 Firebase 控制台,按一下「Add project」(新增專案),然後按照畫面上的指示建立 Firebase 專案,或將 Firebase 服務新增至現有的 Google Cloud 專案。
按一下 [Create database] (建立資料庫)。
資料庫模式請選取「Enterprise」。
選取「Firestore in Native Mode」(Firestore 原生模式) 做為作業模式,此模式支援核心和管道作業。
選取資料庫的位置。
選取 Cloud Firestore Security Rules 的起始模式:
- 測試模式
適合用於開始使用行動和網頁用戶端程式庫,但允許任何人讀取及覆寫您的資料。測試完成後,請務必詳閱「保護資料」一節。
如要開始使用網頁、Apple 平台或 Android SDK,請選取測試模式。
- 正式環境模式
拒絕所有來自行動和網頁用戶端的讀寫要求。 經過驗證的應用程式伺服器 (Node.js、Python、Java) 仍可存取資料庫。
初始 Cloud Firestore Security Rules 組合會套用至預設 Cloud Firestore 資料庫。如果您為專案建立多個資料庫,可以為每個資料庫部署 Cloud Firestore Security Rules。
點選「建立」。
啟用 Cloud Firestore 時,系統也會在 Cloud API Manager 中啟用 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.11.0'
-
使用 Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.11.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 & admin」(IAM 與管理) >「Service accounts」(服務帳戶)。產生新的私密金鑰,並儲存 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 & admin」(IAM 與管理) >「Service accounts」(服務帳戶)。產生新的私密金鑰,並儲存 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 & admin」(IAM 與管理) >「Service accounts」(服務帳戶)。產生新的私密金鑰,並儲存 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
使用管道作業讀取資料
現在,您可以比較 Pipeline 查詢體驗與 Core 查詢體驗。
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"); } });
後續步驟
請參閱下列主題,深入瞭解 Core 和 Pipeline 作業:
- 請務必熟悉核心和管道作業之間的差異
- 進一步瞭解如何使用核心作業進行查詢
- 進一步瞭解如何使用管道作業查詢。