Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

    מצב מבחן

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

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

ג'אווה

  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:28.4.2')
    
        // 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:23.0.4'
    }
    

קוטלין+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:28.4.2')
    
        // 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:23.0.4'
    }
    
ג'אווה
  1. הוסף את ה- SDK לניהול ה- Firebase לאפליקציה שלך:
    • שימוש 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. ממשק אחדות לאנדרואיד.
  3. בעת בנייה עבור Android, אפשר ל- ProGuarding להימנע ממגבלת ה- Android DEX. לשם כך, בעורך Unity:

    1. בחר קובץ> הגדרות בנייה
    2. העבר את 'פלטפורמה' ל'אנדרואיד 'ולחץ על' החלף פלטפורמה '
    3. לחץ על 'הגדרות נגן ...'
    4. בממשק המשתמש המרכזי של Unity, תחת 'הגדרות עבור Android', בחר 'הגדרות פרסום'
    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

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

אמולטור 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 נתונים מקוונים תיעוד.
מָהִיר
import Firebase
FirebaseApp.configure()

let db = Firestore.firestore()
Objective-C
@import Firebase;

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

ג'אווה

// 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
ג'אווה
ה- Cloud Firestore SDK מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את 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();
    
  • פִּיתוֹן
    ה- Cloud Firestore SDK מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את 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()
    
  • פִּיתוֹן

    ה- Cloud Firestore SDK מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את 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();
      
    ללכת
    ה- Cloud Firestore SDK מאותחל בדרכים שונות בהתאם לסביבה שלך. להלן השיטות הנפוצות ביותר. לקבלת התייחסות שלמה, לראות לאתחל את 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()
    {
        // Create the Cloud Firestore client
        $db = new FirestoreClient();
        printf('Created Cloud Firestore client with default project ID.' . PHP_EOL);
    }
    אַחְדוּת
    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);
    });
    מָהִיר
    // 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
    // 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);
          }
        }];

    ג'אווה

    // 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)
        }
    ג'אווה
    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);
    });
    מָהִיר
    // 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
    // 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);
          }
        }];

    ג'אווה

    // 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)
        }
    ג'אווה
    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 .

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

    גרסת אינטרנט 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()}`);
        });
    });
    מָהִיר
    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
    [[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);
            }
          }
        }];

    ג'אווה

    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());
                    }
                }
            });

    Kotlin+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)
            }
    ג'אווה
    // 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

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

    אם אתה משתמש באינטרנט, אנדרואיד או iOS 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;
        }
      }
    }
    

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

    צפה במדריך וידאו

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

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

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

    הצעדים הבאים

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