Catch up on everthing we announced at this year's Firebase Summit. Learn more

התחל לעבוד עם Cloud Firestore

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

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

  1. אם לא עשית זאת עדיין, ליצור פרויקט Firebase: בשנות ה קונסולת Firebase , לחץ הוסף פרויקט, ולאחר מכן פעל בהתאם להוראות שעל-גבי המסך כדי ליצור פרויקט Firebase או להוסיף שירותים Firebase לפרויקט GCP הקיים.

  2. נווט אל מקטע הענן Firestore של קונסולת Firebase . תתבקש לבחור פרויקט Firebase קיים. עקוב אחר זרימת העבודה של יצירת מסד הנתונים.

  3. בחר מצב התחלה עבור כללי האבטחה של Cloud Firestore שלך:

    מצב מבחן

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

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

    מצב נעול

    דוחה כל קריאה וכתיבה מלקוחות ניידים ואינטרנט. שרתי היישומים המאומתים שלך (C#, Go, Java, Node.js, PHP, Python או Ruby) עדיין יכולים לגשת למסד הנתונים שלך.

    כדי להתחיל עם ספריית שרת C#, Go, Java, Node.js, PHP, Python או Ruby, בחר במצב נעול.

  4. בחר מיקום עבור מסד הנתונים שלך.

    • הגדרת המיקום זהו הפרויקט שלך בפלטפורמת הענן של Google מחדל מיקום משאב (GCP) . שים לב שמיקום זה ישמש עבור שירותי GCP בפרויקט שלך הדורשים הגדרת מיקום, במיוחד, ברירת המחדל לאחסון בענן הדלי שלך מנוע יישום אפליקציה (נדרשה אם אתה משתמש ענן מתזמן).

    • אם אינך יכול לבחור מיקום, אז לפרויקט שלך כבר יש מיקום ברירת מחדל של משאב GCP. הוא הוגדר במהלך יצירת הפרויקט או בעת הגדרת שירות אחר הדורש הגדרת מיקום.

  5. לחץ על סיום.

כשמפעילים ענן Firestore, זה גם מאפשר API של מנהל API ענן .

הגדר את סביבת הפיתוח שלך

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

גרסת אינטרנט 8

  1. פעל בהתאם להוראות כדי להוסיף Firebase ביישום האינטרנט שלך .
  2. מוסיפים את ספריות Firebase ו ענן Firestore באפליקציה:
    <script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-firestore.js"></script>
    ענן Firestore SDK זמין גם כמארז NPM.
    npm install firebase@8.10.0 --save
    
    יצטרך דורש הוא Firebase ידני הענן firestore.
    const firebase = require("firebase");
    // Required for side-effects
    require("firebase/firestore");
    

גרסת אינטרנט 9

  1. פעל בהתאם להוראות כדי להוסיף Firebase ביישום האינטרנט שלך .
  2. ה-Cloud Firestore SDK זמין כחבילת npm.
    npm install firebase@9.4.1 --save
    
    תצטרך לייבא הן Firebase ו ענן firestore.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
    
iOS+
  1. פעל בהתאם להוראות כדי להוסיף Firebase לאפליקציית האפלה שלך .
  2. מוסיפים את תרמיל ענן Firestore כדי שלך Podfile
    pod 'Firebase/Firestore'
    
    # Optionally, include the Swift extensions if you're using Swift.
    pod 'FirebaseFirestoreSwift'
    
  3. שמרו את הקובץ ולהפעיל pod install .

Java

  1. פעל בהתאם להוראות כדי להוסיף Firebase באפליקציית ה- Android שלך .
  2. באמצעות BOM אנדרואיד Firebase , להכריז על התלות של הספרייה ענן Firestore אנדרואיד במודול שלך (ברמת האפליקציה) קובץ Gradle (בדרך כלל app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare the dependency for the Cloud Firestore library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-firestore'
    }
    

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר שלא להשתמש ב-Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependency for the Cloud Firestore library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-firestore:24.0.0'
    }
    

קוטלין+KTX

  1. פעל בהתאם להוראות כדי להוסיף Firebase באפליקציית ה- Android שלך .
  2. באמצעות BOM אנדרואיד Firebase , להכריז על התלות של הספרייה ענן Firestore אנדרואיד במודול שלך (ברמת האפליקציה) קובץ Gradle (בדרך כלל app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare the dependency for the Cloud Firestore library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-firestore-ktx'
    }
    

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר שלא להשתמש ב-Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependency for the Cloud Firestore library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-firestore-ktx:24.0.0'
    }
    
Java
  1. הוסף את Firebase Admin SDK לאפליקציה שלך:
    • שימוש Gradle:
      compile 'com.google.firebase:firebase-admin:8.1.0'
      
    • שימוש מייבן:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>8.1.0</version>
      </dependency>
           
  2. בצע את ההוראות שלהלן כדי לאתחל את Cloud Firestore עם האישורים המתאימים בסביבה שלך.
פִּיתוֹן
  1. מוסיפים את SDK של ניהול Firebase לאפליקציית Python שלך:
    pip install --upgrade firebase-admin
  2. בצע את ההוראות שלהלן כדי לאתחל את Cloud Firestore עם האישורים המתאימים בסביבה שלך.
C++
  1. פעל בהתאם להוראות כדי להוסיף Firebase ל- C ++ לפרויקט שלך .
  2. ממשק C++ לאנדרואיד.
    • תלות Gradle. הוסף את הקוד הבא מודול (ברמת היישום) קובץ Gradle שלך (בדרך כלל app/build.gradle ):
              android.defaultConfig.externalNativeBuild.cmake {
                arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
              }
      
              apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
              firebaseCpp.dependencies {
                // earlier entries
                auth
                firestore
              }
              
    • תלות בינארית. באופן דומה, הדרך המומלצת כדי לקבל את התלות בינארי הוא להוסיף את הטקסט הבא לקובץ CMakeLists.txt הקובץ:
              add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
              set(firebase_libs firebase_auth firebase_firestore firebase_app)
              # Replace the target name below with the actual name of your target,
              # for example, "native-lib".
              target_link_libraries(${YOUR_TARGET_NAME_HERE} "${firebase_libs}")
              
  3. כדי להגדיר אינטגרציה שולחניים, לראות להוסיף Firebase לפרויקט C ++ שלך .
אַחְדוּת
  1. פעל בהתאם להוראות כדי להוסיף Firebase לפרויקט האחדות שלך .
  2. ממשק Unity לאנדרואיד.
  3. בעת בנייה עבור אנדרואיד, הפעל את ProGuarding כדי להימנע ממגבלת Android DEX. לשם כך, בעורך Unity:

    1. בחר קובץ > הגדרות בנייה
    2. העבר את 'פלטפורמה' ל'אנדרואיד' ולחץ על 'החלף פלטפורמה'
    3. לחץ על 'הגדרות נגן...'
    4. בממשק המשתמש הראשי של Unity, תחת 'הגדרות עבור אנדרואיד', בחר 'הגדרות פרסום'
    5. בקטע 'הקטין', שנה את הגדרות השחרור והניפוי באגים מ'ללא' ל'ProGuard'
Node.js
  1. מוסיפים את SDK של ניהול Firebase באפליקציה:
    npm install firebase-admin --save
  2. עקוב אחר ההוראות שלהלן כדי לאתחל את Cloud Firestore עם האישורים המתאימים בסביבה שלך.
ללכת
  1. מוסיפים את SDK של ניהול Firebase כדי האפליקציה Go שלך:
    go get firebase.google.com/go
    
  2. בצע את ההוראות שלהלן כדי לאתחל את Cloud Firestore עם האישורים המתאימים בסביבה שלך.
PHP
  1. ספריות לקוח לשרת הענן Firestore (Java, Node.js, Python, Go, PHP, C #, ו- Ruby) שימוש אישורי ברירת Google Application לאימות.
    • כדי לאמת מסביבת הפיתוח שלך, להגדיר את GOOGLE_APPLICATION_CREDENTIALS משתנה הסביבה לנקודה לקובץ המפתח חשבון שירות JSON. אתה יכול ליצור קובץ מפתח על דף אישורי קונסולת API .
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • בסביבת הייצור שלך, אינך צריך לבצע אימות אם אתה מפעיל את האפליקציה שלך ב-App Engine או Compute Engine, באמצעות אותו פרויקט שבו אתה משתמש עבור Cloud Firestore. אחרת, להגדיר חשבון שירות .
  2. התקן ולאפשר רחבת gRPC עבור PHP, אשר תצטרך להשתמש בספריית לקוח.
  3. מוסיפים את הספרייה PHP ענן Firestore באפליקציה:
    composer require google/cloud-firestore
C#
  1. ספריות לקוח לשרת הענן Firestore (Java, Node.js, Python, Go, PHP, C #, ו- Ruby) שימוש אישורי ברירת Google Application לאימות.
    • כדי לאמת מסביבת הפיתוח שלך, להגדיר את GOOGLE_APPLICATION_CREDENTIALS משתנה הסביבה לנקודה לקובץ המפתח חשבון שירות JSON. אתה יכול ליצור קובץ מפתח על דף אישורי קונסולת API .
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • בסביבת הייצור שלך, אינך צריך לבצע אימות אם אתה מפעיל את היישום שלך ב-App Engine או Compute Engine, תוך שימוש באותו פרויקט שבו אתה משתמש עבור Cloud Firestore. אחרת, להגדיר חשבון שירות .
  2. מוסיפים את הספרייה # ענן Firestore C לאפליקציה שלך שלך .csproj הקובץ:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. הוסף את הקוד הבא שלך Program.cs הקובץ:
    using Google.Cloud.Firestore;
אוֹדֶם
  1. ספריות לקוח לשרת הענן Firestore (Java, Node.js, Python, Go, PHP, C #, ו- Ruby) שימוש אישורי ברירת Google Application לאימות.
    • כדי לאמת מסביבת הפיתוח שלך, להגדיר את GOOGLE_APPLICATION_CREDENTIALS משתנה הסביבה לנקודה לקובץ המפתח חשבון שירות JSON. אתה יכול ליצור קובץ מפתח על דף אישורי קונסולת API .
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • בסביבת הייצור שלך, אינך צריך לבצע אימות אם אתה מפעיל את היישום שלך ב-App Engine או Compute Engine, תוך שימוש באותו פרויקט שבו אתה משתמש עבור Cloud Firestore. אחרת, להגדיר חשבון שירות .
  2. מוסיפים את הספרייה ענן Firestore רובי לאפליקציה שלך שלך Gemfile :
    gem "google-cloud-firestore"
  3. התקן תלות מן שלך Gemfile באמצעות:
    bundle install

(אופציונלי) אב-טיפוס ובדיקה עם Firebase Local Emulator Suite

למפתחים ניידים, לפני שנדבר על האופן שבו האפליקציה שלכם כותבת וקוראת מ-Cloud Firestore, בואו נציג קבוצה של כלים שתוכלו להשתמש בהם כדי להשתמש באבטיפוס ולבדוק את הפונקציונליות של Cloud Firestore: Firebase Local Emulator Suite. אם אתה מנסה מודלים שונים של נתונים, מייעל את כללי האבטחה שלך, או עובד כדי למצוא את הדרך המשתלמת ביותר לאינטראקציה עם הקצה האחורי, היכולת לעבוד מקומית מבלי לפרוס שירותים חיים יכולה להיות רעיון מצוין.

אמולטור של Cloud Firestore הוא חלק מחבילת האמולטור המקומי, המאפשרת לאפליקציה שלך לקיים אינטראקציה עם תוכן מסד הנתונים ותצורת הדמיית שלך, כמו גם משאבי הפרויקט המחויכים שלך (פונקציות, מסדי נתונים אחרים וכללי אבטחה).

השימוש באמולטור Cloud Firestore כרוך בכמה שלבים בלבד:

  1. הוספת שורת קוד לתצורת הבדיקה של האפליקציה שלך כדי להתחבר לאמולטור.
  2. מן השורש של ספריית הפרויקט המקומית, פועל firebase emulators:start .
  3. ביצוע שיחות מקוד אב הטיפוס של האפליקציה שלך באמצעות SDK של פלטפורמת Cloud Firestore כרגיל.

מפורטת בהדרכה המעורבת ענן Firestore ו ענן פונקציות נגישה. כמו כן כדאי להעיף מבט לעבר הקדמת Suite Emulator המקומית .

אתחול Cloud Firestore

אתחול מופע של Cloud Firestore:

גרסת אינטרנט 9

// Initialize Cloud Firestore through Firebase
import { initializeApp } from "firebase/app"
import { getFirestore } from "firebase/firestore"
const firebaseApp = initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

const db = getFirestore();
הערכים עבור 'initializeApp` ניתן למצוא של יישום האינטרנט שלך `firebaseConfig` . כדי להתמיד נתונים כאשר המכשיר מאבד את הקשר שלו, לראות את Enable נתונים מקוונים תיעוד.

גרסת אינטרנט 8

// Initialize Cloud Firestore through Firebase
firebase.initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

var db = firebase.firestore();
הערכים עבור 'initializeApp` ניתן למצוא של יישום האינטרנט שלך `firebaseConfig` . כדי להתמיד נתונים כאשר המכשיר מאבד את הקשר שלו, לראות את Enable נתונים מקוונים תיעוד.
מָהִיר
הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
import Firebase
FirebaseApp.configure()

let db = Firestore.firestore()
Objective-C
הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
@import Firebase;

// Use Firebase library to configure APIs
[FIRApp configure];
  
FIRFirestore *defaultFirestore = [FIRFirestore firestore];

Java

// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();

קוטלין+KTX

// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
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 Admin Firebase בשרת שלכם, להשתמש בחשבון שירות .

    עבור 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();
    
  • פִּיתוֹן
    ה-SDK של Cloud Firestore מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את SDK של הניהול .
  • אתחל על פלטפורמת Google Cloud
    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, {
      'projectId': project_id,
    })
    
    db = firestore.client()
    
  • אתחול בשרת משלך

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

    עבור 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')
    firebase_admin.initialize_app(cred)
    
    db = firestore.client()
    
  • פִּיתוֹן

    ה-SDK של Cloud Firestore מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את SDK של הניהול .
  • אתחל על פלטפורמת Google Cloud
    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, {
      'projectId': project_id,
    })
    
    db = firestore.AsyncClient()
    
  • אתחול בשרת משלך

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

    עבור 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')
    firebase_admin.initialize_app(cred)
    
    db = firestore.AsyncClient()
    
  • C++
    // Make sure the call to `Create()` happens some time before you call Firestore::GetInstance().
    App::Create();
    Firestore* db = Firestore::GetInstance();
    Node.js
    ה-SDK של Cloud Firestore מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את SDK של הניהול .
    • אתחל על פונקציות ענן
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • אתחל בפלטפורמת Google Cloud
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
      initializeApp({
        credential: applicationDefault()
      });
      
      const db = getFirestore();
    • אתחול בשרת משלך

      כדי להשתמש ב- SDK Admin Firebase בשרת שלכם (או כול סביבת Node.js אחרת), להשתמש בחשבון שירות . עבור IAM & מנהל> שירות חשבונות במסוף בפלטפורמת הענן. צור מפתח פרטי חדש ושמור את קובץ ה-JSON. לאחר מכן השתמש בקובץ כדי לאתחל את ה-SDK:

      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
      const serviceAccount = require('./path/to/serviceAccountKey.json');
      
      initializeApp({
        credential: cert(serviceAccount)
      });
      
      const db = getFirestore();
      
    ללכת
    ה-SDK של Cloud Firestore מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את SDK של הניהול .
  • אתחל על פלטפורמת Google Cloud
    import (
      "log"
    
      firebase "firebase.google.com/go"
      "google.golang.org/api/option"
    )
    
    // Use the application default credentials
    ctx := context.Background()
    conf := &firebase.Config{ProjectID: projectID}
    app, err := firebase.NewApp(ctx, conf)
    if err != nil {
      log.Fatalln(err)
    }
    
    client, err := app.Firestore(ctx)
    if err != nil {
      log.Fatalln(err)
    }
    defer client.Close()
    
  • אתחול בשרת משלך

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

    עבור IAM & מנהל> שירות חשבונות במסוף בפלטפורמת הענן. צור מפתח פרטי חדש ושמור את קובץ ה-JSON. לאחר מכן השתמש בקובץ כדי לאתחל את ה-SDK:

    import (
      "log"
    
      firebase "firebase.google.com/go"
      "google.golang.org/api/option"
    )
    
    // Use a service account
    ctx := context.Background()
    sa := option.WithCredentialsFile("path/to/serviceAccount.json")
    app, err := firebase.NewApp(ctx, nil, sa)
    if err != nil {
      log.Fatalln(err)
    }
    
    client, err := app.Firestore(ctx)
    if err != nil {
      log.Fatalln(err)
    }
    defer client.Close()
    
  • PHP
    use Google\Cloud\Firestore\FirestoreClient;
    
    /**
     * Initialize Cloud Firestore with default project ID.
     */
    function setup_client_create(string $projectId = null)
    {
        // Create the Cloud Firestore client
        if (empty($projectId)) {
            // The `projectId` parameter is optional and represents which project the
            // client will act on behalf of. If not supplied, the client falls back to
            // the default project inferred from the environment.
            $db = new FirestoreClient();
            printf('Created Cloud Firestore client with default project ID.' . PHP_EOL);
        } else {
            $db = new FirestoreClient([
                'projectId' => $projectId,
            ]);
            printf('Created Cloud Firestore client with project ID: %s' . PHP_EOL, $projectId);
        }
    }
    אַחְדוּת
    using Firebase.Firestore;
    using Firebase.Extensions;
    FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
    C#
    FirestoreDb db = FirestoreDb.Create(project);
    Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
    אוֹדֶם
    require "google/cloud/firestore"
    
    # The `project_id` parameter is optional and represents which project the
    # client will act on behalf of. If not supplied, the client falls back to the
    # default project inferred from the environment.
    firestore = Google::Cloud::Firestore.new project_id: project_id
    
    puts "Created Cloud Firestore client with given project ID."

    הוסף נתונים

    Cloud Firestore מאחסן נתונים במסמכים, המאוחסנים באוספים. Cloud Firestore יוצר אוספים ומסמכים באופן מרומז בפעם הראשונה שאתה מוסיף נתונים למסמך. אינך צריך ליצור במפורש אוספים או מסמכים.

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

    גרסת אינטרנט 9

    import { collection, addDoc } from "firebase/firestore"; 
    
    try {
      const docRef = await addDoc(collection(db, "users"), {
        first: "Ada",
        last: "Lovelace",
        born: 1815
      });
      console.log("Document written with ID: ", docRef.id);
    } catch (e) {
      console.error("Error adding document: ", e);
    }

    גרסת אינטרנט 8

    db.collection("users").add({
        first: "Ada",
        last: "Lovelace",
        born: 1815
    })
    .then((docRef) => {
        console.log("Document written with ID: ", docRef.id);
    })
    .catch((error) => {
        console.error("Error adding document: ", error);
    });
    מָהִיר
    הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
    // Add a new document with a generated ID
    var ref: DocumentReference? = nil
    ref = db.collection("users").addDocument(data: [
        "first": "Ada",
        "last": "Lovelace",
        "born": 1815
    ]) { err in
        if let err = err {
            print("Error adding document: \(err)")
        } else {
            print("Document added with ID: \(ref!.documentID)")
        }
    }
    Objective-C
    הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
    // Add a new document with a generated ID
    __block FIRDocumentReference *ref =
        [[self.db collectionWithPath:@"users"] addDocumentWithData:@{
          @"first": @"Ada",
          @"last": @"Lovelace",
          @"born": @1815
        } completion:^(NSError * _Nullable error) {
          if (error != nil) {
            NSLog(@"Error adding document: %@", error);
          } else {
            NSLog(@"Document added with ID: %@", ref.documentID);
          }
        }];

    Java

    // Create a new user with a first and last name
    Map<String, Object> user = new HashMap<>();
    user.put("first", "Ada");
    user.put("last", "Lovelace");
    user.put("born", 1815);
    
    // Add a new document with a generated ID
    db.collection("users")
            .add(user)
            .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                @Override
                public void onSuccess(DocumentReference documentReference) {
                    Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "Error adding document", e);
                }
            });

    קוטלין+KTX

    // Create a new user with a first and last name
    val user = hashMapOf(
            "first" to "Ada",
            "last" to "Lovelace",
            "born" to 1815
    )
    
    // Add a new document with a generated ID
    db.collection("users")
        .add(user)
        .addOnSuccessListener { documentReference ->
            Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
        }
        .addOnFailureListener { e ->
            Log.w(TAG, "Error adding document", e)
        }
    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());
    פִּיתוֹן
    doc_ref = db.collection(u'users').document(u'alovelace')
    doc_ref.set({
        u'first': u'Ada',
        u'last': u'Lovelace',
        u'born': 1815
    })

    פִּיתוֹן

    doc_ref = db.collection("users").document("alovelace")
    await doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})
    C++
    // Add a new document with a generated ID
    Future<DocumentReference> user_ref =
        db->Collection("users").Add({{"first", FieldValue::String("Ada")},
                                     {"last", FieldValue::String("Lovelace")},
                                     {"born", FieldValue::Integer(1815)}});
    
    user_ref.OnCompletion([](const Future<DocumentReference>& future) {
      if (future.error() == Error::kErrorOk) {
        std::cout << "DocumentSnapshot added with ID: " << future.result()->id()
                  << std::endl;
      } else {
        std::cout << "Error adding document: " << future.error_message() << std::endl;
      }
    });
    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    ללכת
    _, _, err := client.Collection("users").Add(ctx, map[string]interface{}{
    	"first": "Ada",
    	"last":  "Lovelace",
    	"born":  1815,
    })
    if err != nil {
    	log.Fatalf("Failed adding alovelace: %v", err)
    }
    PHP
    $docRef = $db->collection('samples/php/users')->document('lovelace');
    $docRef->set([
        'first' => 'Ada',
        'last' => 'Lovelace',
        'born' => 1815
    ]);
    printf('Added data to the lovelace document in the users collection.' . PHP_EOL);
    אַחְדוּת
    DocumentReference docRef = db.Collection("users").Document("alovelace");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
    	{ "First", "Ada" },
    	{ "Last", "Lovelace" },
    	{ "Born", 1815 },
    };
    docRef.SetAsync(user).ContinueWithOnMainThread(task => {
    	Debug.Log("Added data to the alovelace document in the users collection.");
    });
    C#
    DocumentReference docRef = db.Collection("users").Document("alovelace");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Ada" },
        { "Last", "Lovelace" },
        { "Born", 1815 }
    };
    await docRef.SetAsync(user);
    אוֹדֶם
    doc_ref = firestore.doc "#{collection_path}/alovelace"
    
    doc_ref.set(
      {
        first: "Ada",
        last:  "Lovelace",
        born:  1815
      }
    )
    
    puts "Added data to the alovelace document in the users collection."

    עכשיו להוסיף עוד מסמך users באוסף. שימו לב שמסמך זה כולל צמד מפתח-ערך (שם אמצעי) שאינו מופיע במסמך הראשון. מסמכים באוסף יכולים להכיל קבוצות שונות של מידע.

    גרסת אינטרנט 9

    // Add a second document with a generated ID.
    import { addDoc, collection } from "firebase/firestore"; 
    
    try {
      const docRef = await addDoc(collection(db, "users"), {
        first: "Alan",
        middle: "Mathison",
        last: "Turing",
        born: 1912
      });
    
      console.log("Document written with ID: ", docRef.id);
    } catch (e) {
      console.error("Error adding document: ", e);
    }

    גרסת אינטרנט 8

    // Add a second document with a generated ID.
    db.collection("users").add({
        first: "Alan",
        middle: "Mathison",
        last: "Turing",
        born: 1912
    })
    .then((docRef) => {
        console.log("Document written with ID: ", docRef.id);
    })
    .catch((error) => {
        console.error("Error adding document: ", error);
    });
    מָהִיר
    הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
    // Add a second document with a generated ID.
    ref = db.collection("users").addDocument(data: [
        "first": "Alan",
        "middle": "Mathison",
        "last": "Turing",
        "born": 1912
    ]) { err in
        if let err = err {
            print("Error adding document: \(err)")
        } else {
            print("Document added with ID: \(ref!.documentID)")
        }
    }
    Objective-C
    הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
    // Add a second document with a generated ID.
    __block FIRDocumentReference *ref =
        [[self.db collectionWithPath:@"users"] addDocumentWithData:@{
          @"first": @"Alan",
          @"middle": @"Mathison",
          @"last": @"Turing",
          @"born": @1912
        } completion:^(NSError * _Nullable error) {
          if (error != nil) {
            NSLog(@"Error adding document: %@", error);
          } else {
            NSLog(@"Document added with ID: %@", ref.documentID);
          }
        }];

    Java

    // Create a new user with a first, middle, and last name
    Map<String, Object> user = new HashMap<>();
    user.put("first", "Alan");
    user.put("middle", "Mathison");
    user.put("last", "Turing");
    user.put("born", 1912);
    
    // Add a new document with a generated ID
    db.collection("users")
            .add(user)
            .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                @Override
                public void onSuccess(DocumentReference documentReference) {
                    Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "Error adding document", e);
                }
            });

    קוטלין+KTX

    // Create a new user with a first, middle, and last name
    val user = hashMapOf(
            "first" to "Alan",
            "middle" to "Mathison",
            "last" to "Turing",
            "born" to 1912
    )
    
    // Add a new document with a generated ID
    db.collection("users")
        .add(user)
        .addOnSuccessListener { documentReference ->
            Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
        }
        .addOnFailureListener { e ->
            Log.w(TAG, "Error adding document", e)
        }
    Java
    DocumentReference docRef = db.collection("users").document("aturing");
    // Add document data with an additional field ("middle")
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Alan");
    data.put("middle", "Mathison");
    data.put("last", "Turing");
    data.put("born", 1912);
    
    ApiFuture<WriteResult> result = docRef.set(data);
    System.out.println("Update time : " + result.get().getUpdateTime());
    פִּיתוֹן
    doc_ref = db.collection(u'users').document(u'aturing')
    doc_ref.set({
        u'first': u'Alan',
        u'middle': u'Mathison',
        u'last': u'Turing',
        u'born': 1912
    })

    פִּיתוֹן

    doc_ref = db.collection("users").document("aturing")
    await doc_ref.set(
        {"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912}
    )
    C++
    db->Collection("users")
        .Add({{"first", FieldValue::String("Alan")},
              {"middle", FieldValue::String("Mathison")},
              {"last", FieldValue::String("Turing")},
              {"born", FieldValue::Integer(1912)}})
        .OnCompletion([](const Future<DocumentReference>& future) {
          if (future.error() == Error::kErrorOk) {
            std::cout << "DocumentSnapshot added with ID: "
                      << future.result()->id() << std::endl;
          } else {
            std::cout << "Error adding document: " << future.error_message()
                      << std::endl;
          }
        });
    Node.js
    const aTuringRef = db.collection('users').doc('aturing');
    
    await aTuringRef.set({
      'first': 'Alan',
      'middle': 'Mathison',
      'last': 'Turing',
      'born': 1912
    });
    ללכת
    _, _, err = client.Collection("users").Add(ctx, map[string]interface{}{
    	"first":  "Alan",
    	"middle": "Mathison",
    	"last":   "Turing",
    	"born":   1912,
    })
    if err != nil {
    	log.Fatalf("Failed adding aturing: %v", err)
    }
    PHP
    $docRef = $db->collection('samples/php/users')->document('aturing');
    $docRef->set([
        'first' => 'Alan',
        'middle' => 'Mathison',
        'last' => 'Turing',
        'born' => 1912
    ]);
    printf('Added data to the aturing document in the users collection.' . PHP_EOL);
    אַחְדוּת
    DocumentReference docRef = db.Collection("users").Document("aturing");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
    	{ "First", "Alan" },
    	{ "Middle", "Mathison" },
    	{ "Last", "Turing" },
    	{ "Born", 1912 }
    };
    docRef.SetAsync(user).ContinueWithOnMainThread(task => {
    	Debug.Log("Added data to the aturing document in the users collection.");
    });
    C#
    DocumentReference docRef = db.Collection("users").Document("aturing");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Alan" },
        { "Middle", "Mathison" },
        { "Last", "Turing" },
        { "Born", 1912 }
    };
    await docRef.SetAsync(user);
    אוֹדֶם
    doc_ref = firestore.doc "#{collection_path}/aturing"
    
    doc_ref.set(
      {
        first:  "Alan",
        middle: "Mathison",
        last:   "Turing",
        born:   1912
      }
    )
    
    puts "Added data to the aturing document in the users collection."

    קרא נתונים

    לפותח לוודא שהוספת נתוני ענן Firestore, להשתמש צופה נתון קונסולת Firebase .

    ניתן גם להשתמש בשיטת "קבל" כדי לאחזר את כל האוסף.

    גרסת אינטרנט 9

    import { collection, getDocs } from "firebase/firestore"; 
    
    const querySnapshot = await getDocs(collection(db, "users"));
    querySnapshot.forEach((doc) => {
      console.log(`${doc.id} => ${doc.data()}`);
    });

    גרסת אינטרנט 8

    db.collection("users").get().then((querySnapshot) => {
        querySnapshot.forEach((doc) => {
            console.log(`${doc.id} => ${doc.data()}`);
        });
    });
    מָהִיר
    הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
    db.collection("users").getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                print("\(document.documentID) => \(document.data())")
            }
        }
    }
    Objective-C
    הערה: מוצר זה אינו זמין על מטרות קליפ watchOS ו App.
    [[self.db collectionWithPath:@"users"]
        getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot,
                                     NSError * _Nullable error) {
          if (error != nil) {
            NSLog(@"Error getting documents: %@", error);
          } else {
            for (FIRDocumentSnapshot *document in snapshot.documents) {
              NSLog(@"%@ => %@", document.documentID, document.data);
            }
          }
        }];

    Java

    db.collection("users")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d(TAG, document.getId() + " => " + document.getData());
                        }
                    } else {
                        Log.w(TAG, "Error getting documents.", task.getException());
                    }
                }
            });

    קוטלין+KTX

    db.collection("users")
            .get()
            .addOnSuccessListener { result ->
                for (document in result) {
                    Log.d(TAG, "${document.id} => ${document.data}")
                }
            }
            .addOnFailureListener { exception ->
                Log.w(TAG, "Error getting documents.", exception)
            }
    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"));
    }
    פִּיתוֹן
    users_ref = db.collection(u'users')
    docs = users_ref.stream()
    
    for doc in docs:
        print(f'{doc.id} => {doc.to_dict()}')

    פִּיתוֹן

    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    async for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    C++
    Future<QuerySnapshot> users = db->Collection("users").Get();
    users.OnCompletion([](const Future<QuerySnapshot>& future) {
      if (future.error() == Error::kErrorOk) {
        for (const DocumentSnapshot& document : future.result()->documents()) {
          std::cout << document << std::endl;
        }
      } else {
        std::cout << "Error getting documents: " << future.error_message()
                  << std::endl;
      }
    });
    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    ללכת
    iter := client.Collection("users").Documents(ctx)
    for {
    	doc, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatalf("Failed to iterate: %v", err)
    	}
    	fmt.Println(doc.Data())
    }
    PHP
    $usersRef = $db->collection('samples/php/users');
    $snapshot = $usersRef->documents();
    foreach ($snapshot as $user) {
        printf('User: %s' . PHP_EOL, $user->id());
        printf('First: %s' . PHP_EOL, $user['first']);
        if (!empty($user['middle'])) {
            printf('Middle: %s' . PHP_EOL, $user['middle']);
        }
        printf('Last: %s' . PHP_EOL, $user['last']);
        printf('Born: %d' . PHP_EOL, $user['born']);
        printf(PHP_EOL);
    }
    printf('Retrieved and printed out all documents from the users collection.' . PHP_EOL);
    אַחְדוּת
    CollectionReference usersRef = db.Collection("users");
    usersRef.GetSnapshotAsync().ContinueWithOnMainThread(task =>
    {
      QuerySnapshot snapshot = task.Result;
      foreach (DocumentSnapshot document in snapshot.Documents)
      {
        Debug.Log(String.Format("User: {0}", document.Id));
        Dictionary<string, object> documentDictionary = document.ToDictionary();
        Debug.Log(String.Format("First: {0}", documentDictionary["First"]));
        if (documentDictionary.ContainsKey("Middle"))
        {
          Debug.Log(String.Format("Middle: {0}", documentDictionary["Middle"]));
        }
    
        Debug.Log(String.Format("Last: {0}", documentDictionary["Last"]));
        Debug.Log(String.Format("Born: {0}", documentDictionary["Born"]));
      }
    
      Debug.Log("Read all data from the users collection.");
    });
    C#
    CollectionReference usersRef = db.Collection("users");
    QuerySnapshot snapshot = await usersRef.GetSnapshotAsync();
    foreach (DocumentSnapshot document in snapshot.Documents)
    {
        Console.WriteLine("User: {0}", document.Id);
        Dictionary<string, object> documentDictionary = document.ToDictionary();
        Console.WriteLine("First: {0}", documentDictionary["First"]);
        if (documentDictionary.ContainsKey("Middle"))
        {
            Console.WriteLine("Middle: {0}", documentDictionary["Middle"]);
        }
        Console.WriteLine("Last: {0}", documentDictionary["Last"]);
        Console.WriteLine("Born: {0}", documentDictionary["Born"]);
        Console.WriteLine();
    }
    אוֹדֶם
    users_ref = firestore.col collection_path
    users_ref.get do |user|
      puts "#{user.document_id} data: #{user.data}."
    end

    אבטח את הנתונים שלך

    אם אתה משתמש באינטרנט, אנדרואיד, או פלטפורמות אפל SDK, להשתמש באימות Firebase ו ענן Firestore אבטחה כללים כדי לאבטח את הנתונים שלך ב- Cloud firestore.

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

    נדרש אישור

    // Allow read/write access on all documents to any user signed in to the application
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if request.auth != null;
        }
      }
    }
    

    מצב נעול

    // Deny read/write access to all users under any conditions
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if false;
        }
      }
    }
    

    מצב מבחן

    // Allow read/write access to all users under any conditions
    // Warning: **NEVER** use this rule set in production; it allows
    // anyone to overwrite your entire database.
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if true;
        }
      }
    }
    

    לפני שתפרוס את אפליקציית האינטרנט, אנדרואיד או iOS לייצור, בצע גם צעדים כדי להבטיח שרק לקוחות האפליקציה שלך יוכלו לגשת לנתוני Cloud Firestore שלך. עיין בדיקת יישום התיעוד.

    אם אתה משתמש באחת מערכות ה- SDK השרת, השימוש זהות וניהול גישה (IAM) כדי לאבטח את הנתונים שלך ב- Cloud firestore.

    צפה בסרטון הדרכה

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

    אינטרנט
    iOS+
    דְמוּי אָדָם

    אתה יכול למצוא עוד קטעי וידאו ב Firebase ערוץ YouTube .

    הצעדים הבאים

    העמיק את הידע שלך עם הנושאים הבאים: