Hướng dẫn nhanh này sẽ hướng dẫn bạn cách thiết lập Cloud Firestore, thêm dữ liệu, sau đó sử dụng các thao tác chính hoặc thao tác theo quy trình để truy vấn dữ liệu mà bạn vừa thêm trong bảng điều khiển của Firebase bằng thư viện ứng dụng máy chủ cho Java, Node.js và Python.
Hãy sử dụng các thư viện ứng dụng này để thiết lập môi trường máy chủ đặc quyền có quyền truy cập đầy đủ vào cơ sở dữ liệu của bạn.
Tạo cơ sở dữ liệu Cloud Firestore
Nếu bạn chưa tạo dự án Firebase, hãy tạo dự án: Trong bảng điều khiển của Firebase, hãy nhấp vào Thêm dự án, sau đó làm theo hướng dẫn trên màn hình để tạo dự án Firebase hoặc thêm các dịch vụ Firebase vào một dự án Google Cloud hiện có.
Trong bảng điều khiển bên trái, hãy chuyển đến phần Cơ sở dữ liệu và bộ nhớ > Firestore.
Nhấp vào Tạo cơ sở dữ liệu.
Chọn Doanh nghiệp cho chế độ cơ sở dữ liệu.
Chọn Firestore ở Chế độ gốc cho chế độ hoạt động, hỗ trợ các thao tác chính và thao tác theo quy trình.
Chọn một vị trí cho cơ sở dữ liệu của bạn.
Chọn chế độ bắt đầu cho Cloud Firestore Security Rules:
- Chế độ thử nghiệm
Phù hợp để bắt đầu sử dụng thư viện ứng dụng dành cho thiết bị di động và web, nhưng cho phép mọi người đọc và ghi đè dữ liệu của bạn. Sau khi kiểm thử, hãy nhớ xem lại phần Bảo mật dữ liệu của bạn.
Để bắt đầu sử dụng SDK web, SDK cho nền tảng Apple hoặc SDK Android, hãy chọn chế độ thử nghiệm.
- Chế độ sản xuất
Từ chối mọi lượt đọc và ghi từ ứng dụng dành cho thiết bị di động và web. Các máy chủ ứng dụng đã xác thực của bạn (Node.js, Python, Java) vẫn có thể truy cập vào cơ sở dữ liệu của bạn.
Bộ quy tắc bảo mật ban đầu của Cloud Firestore Security Rules sẽ áp dụng cho cơ sở dữ liệu mặc định Cloud Firestore của bạn. Nếu tạo nhiều cơ sở dữ liệu cho dự án, bạn có thể triển khai Cloud Firestore Security Rules cho từng cơ sở dữ liệu.
Nhấp vào Tạo.
Khi bạn bật Cloud Firestore, API này cũng sẽ bật trong Trình quản lý API trên đám mây.
Thiết lập môi trường phát triển
Thêm các phần phụ thuộc và thư viện ứng dụng bắt buộc vào ứng dụng của bạn.
Node.js
-
Thêm SDK của Firebase dành cho quản trị viên vào ứng dụng của bạn:
npm install firebase-admin --save
- Làm theo hướng dẫn bên dưới để khởi động Cloud Firestore bằng thông tin xác thực phù hợp trong môi trường của bạn.
Python
- Thêm SDK của Firebase dành cho quản trị viên vào ứng dụng Python của bạn:
pip install --upgrade firebase-admin
- Làm theo hướng dẫn bên dưới để khởi động Cloud Firestore bằng thông tin xác thực phù hợp trong môi trường của bạn.
Java
- Thêm SDK của Firebase dành cho quản trị viên vào ứng dụng của bạn:
-
Sử dụng Gradle:
implementation 'com.google.firebase:firebase-admin:9.9.0'
-
Sử dụng Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.9.0</version> </dependency>
-
Sử dụng Gradle:
- Làm theo hướng dẫn bên dưới để khởi động Cloud Firestore bằng thông tin xác thực phù hợp trong môi trường của bạn.
Khởi động Cloud Firestore
Khởi động một thực thể của Cloud Firestore:
Node.js
SDK Cloud Firestore được khởi động theo nhiều cách tuỳ thuộc vào môi trường của bạn. Dưới đây là các phương thức phổ biến nhất. Để tham khảo đầy đủ, hãy xem bài viết Khởi động SDK quản trị.-
Khởi động trên Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
Khởi động trên 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();
-
Khởi động trên máy chủ của riêng bạn
Để sử dụng SDK của Firebase dành cho quản trị viên trên máy chủ của riêng bạn (hoặc bất kỳ môi trường Node.js nào khác), hãy sử dụng tài khoản dịch vụ. Chuyển đến phần IAM và quản trị > Tài khoản dịch vụ trong bảng điều khiển Cloud của Google. Tạo một khoá riêng tư mới và lưu tệp JSON. Sau đó, hãy sử dụng tệp này để khởi động 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
SDK Cloud Firestore được khởi động theo nhiều cách tuỳ thuộc vào môi trường của bạn. Dưới đây là các phương thức phổ biến nhất. Để tham khảo đầy đủ, hãy xem bài viết Khởi động SDK quản trị.import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
Bạn cũng có thể sử dụng thông tin xác thực mặc định hiện có của ứng dụng để khởi động 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()
Để sử dụng SDK của Firebase dành cho quản trị viên trên máy chủ của riêng bạn, hãy sử dụng tài khoản dịch vụ.
Chuyển đến phần IAM và quản trị > Tài khoản dịch vụ trong bảng điều khiển Cloud của Google. Tạo một khoá riêng tư mới và lưu tệp JSON. Sau đó, hãy sử dụng tệp này để khởi động 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
SDK Cloud Firestore được khởi động theo nhiều cách tuỳ thuộc vào môi trường của bạn. Dưới đây là các phương thức phổ biến nhất. Để tham khảo đầy đủ, hãy xem bài viết Khởi động SDK quản trị.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();
Để sử dụng SDK của Firebase dành cho quản trị viên trên máy chủ của riêng bạn, hãy sử dụng tài khoản dịch vụ.
Chuyển đến phần IAM và quản trị > Tài khoản dịch vụ trong bảng điều khiển Cloud của Google. Tạo một khoá riêng tư mới và lưu tệp JSON. Sau đó, hãy sử dụng tệp này để khởi động 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();
Thêm dữ liệu bằng các thao tác chính
Để khám phá các thao tác chính và thao tác theo quy trình để truy vấn dữ liệu, hãy thêm dữ liệu vào cơ sở dữ liệu của bạn bằng các thao tác chính.
Cloud Firestore lưu trữ dữ liệu trong Tài liệu, được lưu trữ trong Bộ sưu tập. Cloud Firestore ngầm tạo bộ sưu tập và tài liệu vào lần đầu tiên bạn thêm dữ liệu vào tài liệu. Bạn không cần tạo bộ sưu tập hoặc tài liệu một cách rõ ràng.
Tạo một bộ sưu tập và tài liệu mới bằng mã ví dụ sau.
Node.js
Java
Python
Đọc dữ liệu bằng các thao tác chính
Sử dụng trình xem dữ liệu trong bảng điều khiển của Firebase để nhanh chóng xác minh rằng bạn đã thêm dữ liệu vào Cloud Firestore.
Bạn cũng có thể sử dụng phương thức "get" để truy xuất toàn bộ bộ sưu tập.
Node.js
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Java
Đọc dữ liệu bằng các thao tác theo quy trình
Giờ đây, bạn có thể so sánh trải nghiệm truy vấn theo quy trình với trải nghiệm truy vấn chính.
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"); } });
Các bước tiếp theo
Tìm hiểu sâu hơn về các thao tác chính và thao tác theo quy trình qua các chủ đề sau:
- Đảm bảo bạn đã nắm rõ sự khác biệt giữa các thao tác chính và thao tác theo quy trình
- Tìm hiểu thêm về cách truy vấn bằng các thao tác chính
- Tìm hiểu thêm về cách truy vấn bằng các thao tác theo quy trình .