במדריך הזה מוסבר איך להגדיר את Cloud Firestore, להוסיף נתונים ואז להשתמש בפעולות ליבה או בפעולות של צינורות כדי ליצור שאילתה לנתונים שהוספתם זה עתה במסוף Firebase באמצעות ספריות לקוח של שרתים ל-Java, Node.js ו-Python.
אפשר להשתמש בספריות הלקוח האלה כדי להגדיר סביבות שרת עם הרשאות מלאות לגישה למסד הנתונים.
יצירת מסד נתונים של Cloud Firestore
אם עדיין לא עשיתם זאת, אתם צריכים ליצור פרויקט ב-Firebase: במסוף Firebase, לוחצים על הוספת פרויקט ופועלים לפי ההוראות שמופיעות במסך כדי ליצור פרויקט ב-Firebase או כדי להוסיף שירותי Firebase לפרויקט Google Cloud קיים.
פותחים את הפרויקט במסוף Firebase. בחלונית הימנית, מרחיבים את Build ובוחרים באפשרות Firestore database.
לוחצים על יצירת מסד נתונים.
בוחרים באפשרות Enterprise למצב מסד הנתונים.
בוחרים באפשרות Firestore in Native Mode (Firestore במצב מקורי) למצב הפעולה, שתומך בפעולות Core ו-Pipeline.
בוחרים מיקום למסד הנתונים.
בוחרים מצב התחלה ל-Cloud Firestore Security Rules:
- מצב בדיקה
מתאים להתחלת העבודה עם ספריות לקוח לנייד ולאינטרנט, אבל מאפשר לכל אחד לקרוא ולשכתב את הנתונים. אחרי הבדיקה, חשוב לעיין בסעיף הגנה על הנתונים.
כדי להתחיל להשתמש ב-SDK לאתרים, לפלטפורמות של אפל או ל-Android, בוחרים במצב בדיקה.
- מצב ייצור
דוחה את כל פעולות הקריאה והכתיבה מלקוחות ניידים ומלקוחות אינטרנט. שרתי האפליקציות המאומתים (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.7.1'
-
שימוש ב-Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.7.1</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();
-
איך מאתחלים בשרת שלכם
כדי להשתמש ב-Firebase Admin SDK בשרת שלכם (או בכל סביבת Node.js אחרת), צריך להשתמש בחשבון שירות. נכנסים אל IAM & admin > Service accounts במסוף Google Cloud. יוצרים מפתח פרטי חדש ושומרים את קובץ ה-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 בשרת שלכם, צריך להשתמש בחשבון שירות.
נכנסים אל IAM & admin > Service accounts במסוף Google Cloud. יוצרים מפתח פרטי חדש ושומרים את קובץ ה-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 בשרת שלכם, צריך להשתמש בחשבון שירות.
נכנסים אל IAM & admin > Service accounts במסוף Google Cloud. יוצרים מפתח פרטי חדש ושומרים את קובץ ה-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 מאחסן נתונים ב-Documents, שמאוחסנים ב-Collections. 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"); } });
השלבים הבאים
כדי להרחיב את הידע שלכם בנושא פעולות מרכזיות ופעולות של צינורות, תוכלו לעיין בנושאים הבאים:
- חשוב להכיר את ההבדלים בין פעולות הליבה לפעולות הצינור
- מידע נוסף על ביצוע שאילתות באמצעות פעולות ליבה
- מידע נוסף על שאילתות באמצעות פעולות של צינורות