תחילת העבודה עם מהדורת Firestore Enterprise באמצעות ספריות לקוח לשרת

במדריך למתחילים הזה נסביר איך להגדיר את Cloud Firestore, להוסיף נתונים ואז להשתמש בפעולות ליבה או בפעולות צינור עיבוד נתונים כדי לשלוח שאילתות לגבי הנתונים שהוספתם במסוף Firebase, באמצעות ספריות לקוח של שרת ל-Java, ל-Node.js ול-Python.

אפשר להשתמש בספריות הלקוח האלה כדי להגדיר סביבות שרתים עם הרשאות וגישה מלאה למסד הנתונים.

יצירת מסד נתונים של Cloud Firestore

  1. אם עדיין לא יצרתם פרויקט ב-Firebase: במסוף Firebase, לוחצים על Add project ופועלים לפי ההוראות במסך כדי ליצור פרויקט ב-Firebase או להוסיף שירותי Firebase לפרויקט קיים ב-Google Cloud.

  2. בחלונית שמימין, עוברים אל Databases & Storage > Firestore.

  3. לוחצים על Create database.

  4. בוחרים באפשרות Enterprise כמצב מסד הנתונים.

  5. בוחרים באפשרות Firestore in Native Mode כמצב הפעולה, שתומך בפעולות Core ו-Pipeline.

  6. בוחרים מיקום למסד הנתונים.

  7. צריך לבחור מצב התחלה ל-Cloud Firestore Security Rules:

    מצב בדיקה

    מתאים לתחילת העבודה עם ספריות הלקוח לנייד ולאינטרנט, אבל מאפשר לכל אחד לקרוא את הנתונים שלכם ולשכתב אותם. אחרי הבדיקה, חשוב לעיין בקטע אבטחת הנתונים.

    כדי להתחיל להשתמש ב-SDK לאינטרנט, לפלטפורמות של Apple או ל-Android, בוחרים במצב בדיקה.

    מצב ייצור

    דוחה את כל פעולות הקריאה והכתיבה מלקוחות בנייד ובאינטרנט. שרתי האפליקציות המאומתים (Node.js, ‏ Python, ‏ Java) עדיין יכולים לגשת למסד הנתונים.

    הקבוצה הראשונית של Cloud Firestore Security Rules תחול על מסד הנתונים שמוגדר כברירת מחדל ב-Cloud Firestore. אם יוצרים כמה מסדי נתונים לפרויקט, אפשר לפרוס את Cloud Firestore Security Rules לכל מסד נתונים.

  8. לוחצים על יצירה.

כשמפעילים את Cloud Firestore, ה-API מופעל גם ב-Cloud API Manager.

הגדרת סביבת הפיתוח

מוסיפים לאפליקציה את התלויות וספריות הלקוח הנדרשות.

Node.js
  1. מוסיפים את ה-SDK של Firebase לאדמינים לאפליקציה:
    npm install firebase-admin --save
  2. כדי להפעיל את Cloud Firestore עם פרטי הכניסה המתאימים בסביבה שלכם, צריך לפעול לפי ההוראות הבאות.
Python
  1. מוסיפים את ה-SDK של Firebase לאדמינים לאפליקציית Python:
    pip install --upgrade firebase-admin
  2. כדי להפעיל את Cloud Firestore עם פרטי הכניסה המתאימים בסביבה שלכם, צריך לפעול לפי ההוראות הבאות.
Java
  1. מוסיפים את ה-SDK של Firebase לאדמינים לאפליקציה:
    • שימוש ב-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>
           
  2. כדי להפעיל את Cloud Firestore עם פרטי הכניסה המתאימים בסביבה שלכם, צריך לפעול לפי ההוראות הבאות.

מפעילים את Cloud Firestore

מאתחלים מכונה של Cloud Firestore:

Node.js
ה-SDK של Cloud Firestore מאותחל בדרכים שונות בהתאם לסביבה שלכם. אלה השיטות הכי נפוצות. למידע נוסף, קראו את המאמר הפעלת ה-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();
  • הפעלה בשרת שלכם

    כדי להשתמש ב-SDK של Firebase לאדמינים בשרת שלכם (או בכל סביבת Node.js אחרת), אתם צריכים להשתמש בחשבון שירות. במסוף Google Cloud, נכנסים לדף IAM & admin > 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
ה-SDK של Cloud Firestore מאותחל בדרכים שונות בהתאם לסביבה שלכם. אלה השיטות הכי נפוצות. למידע נוסף, קראו את המאמר הפעלת ה-SDK לאדמינים.
  • הפעלה ב-Google Cloud
    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()
  • הפעלה בשרת שלכם

    כדי להשתמש ב-SDK של Firebase לאדמינים בשרת שלכם, אתם צריכים להשתמש בחשבון שירות.

    נכנסים לדף 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
    ה-SDK של Cloud Firestore מאותחל בדרכים שונות בהתאם לסביבה שלכם. אלה השיטות הכי נפוצות. למידע נוסף, קראו את המאמר הפעלת ה-SDK לאדמינים.
  • הפעלה ב-Google Cloud
    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();
  • הפעלה בשרת שלכם

    כדי להשתמש ב-SDK של Firebase לאדמינים בשרת שלכם, אתם צריכים להשתמש בחשבון שירות.

    נכנסים לדף 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 מאחסן נתונים במסמכים, שמאוחסנים באוספים. Cloud Firestore יוצר אוספים ומסמכים באופן משתמע בפעם הראשונה שמוסיפים נתונים למסמך. אין צורך ליצור אוספים או מסמכים באופן מפורש.

    יוצרים אוסף חדש ומסמך באמצעות הקוד לדוגמה הבא.

    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Java
    DocumentReference docRef = db.collection("users").document("alovelace");
    // Add document data  with id "alovelace" using a hashmap
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Ada");
    data.put("last", "Lovelace");
    data.put("born", 1815);
    //asynchronously write data
    ApiFuture<WriteResult> result = docRef.set(data);
    // ...
    // result.get() blocks on response
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("alovelace")
    doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})

    קריאת נתונים באמצעות פעולות ליבה

    כדי לוודא במהירות שהוספתם נתונים ל-Cloud Firestore, אתם יכולים להשתמש בכלי להצגת נתונים במסוף Firebase.

    אפשר גם להשתמש ב-method‏ "get" כדי לאחזר את כל האוסף.

    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Python
    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    Java
    // asynchronously retrieve all users
    ApiFuture<QuerySnapshot> query = db.collection("users").get();
    // ...
    // query.get() blocks on response
    QuerySnapshot querySnapshot = query.get();
    List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
    for (QueryDocumentSnapshot document : documents) {
      System.out.println("User: " + document.getId());
      System.out.println("First: " + document.getString("first"));
      if (document.contains("middle")) {
        System.out.println("Middle: " + document.getString("middle"));
      }
      System.out.println("Last: " + document.getString("last"));
      System.out.println("Born: " + document.getLong("born"));
    }

    קריאת נתונים באמצעות פעולות בצינור עיבוד נתונים

    עכשיו אתם יכולים להשוות בין חוויית השאילתות ב-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");
          }
        });

    השלבים הבאים

    כדי להעמיק את הידע שלכם על פעולות ליבה ופעולות צינור עיבוד נתונים, אתם יכולים לקרוא את הנושאים הבאים: