Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

ابدأ مع Cloud Firestore

يوضح لك Quickstart كيفية إعداد Cloud Firestore وإضافة البيانات ثم عرض البيانات التي أضفتها للتو في وحدة تحكم Firebase.

أنشئ قاعدة بيانات Cloud Firestore

  1. إذا لم تكن قد قمت بذلك بالفعل ، فأنشئ مشروع Firebase: في وحدة تحكم Firebase ، انقر على إضافة مشروع ، ثم اتبع الإرشادات التي تظهر على الشاشة لإنشاء مشروع Firebase أو لإضافة خدمات Firebase إلى مشروع GCP حالي.

  2. انتقل إلى قسم Cloud 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 Cloud Platform (GCP) الافتراضي لمشروعك. لاحظ أنه سيتم استخدام هذا الموقع لخدمات GCP في مشروعك التي تتطلب إعداد موقع ، وعلى وجه التحديد ، حاوية Cloud Storage الافتراضية وتطبيق App Engine (وهو مطلوب إذا كنت تستخدم Cloud Scheduler).

    • إذا لم تكن قادرًا على تحديد موقع ، فإن مشروعك يحتوي بالفعل على موقع موارد GCP افتراضي. تم تعيينه إما أثناء إنشاء المشروع أو عند إعداد خدمة أخرى تتطلب إعداد الموقع.

  5. انقر فوق تم .

عند تمكين Cloud Firestore ، فإنه يمكّن أيضًا واجهة برمجة التطبيقات في Cloud API Manager .

قم بإعداد بيئة التطوير الخاصة بك

أضف التبعيات ومكتبات العملاء المطلوبة إلى تطبيقك.

الويب
  1. اتبع التعليمات لإضافة Firebase إلى تطبيق الويب الخاص بك .
  2. أضف مكتبات Firebase و Cloud Firestore إلى تطبيقك:
    <script src="https://www.gstatic.com/firebasejs/7.24.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.24.0/firebase-firestore.js"></script>
    يتوفر أيضًا Cloud Firestore SDK كحزمة npm.
    npm install firebase@7.24.0 --save
    
    ستحتاج إلى طلب كل من Firebase و Cloud Firestore يدويًا.
    const firebase = require("firebase");
    // Required for side-effects
    require("firebase/firestore");
    
iOS
  1. اتبع التعليمات لإضافة Firebase إلى تطبيق iOS الخاص بك .
  2. أضف Podfile Cloud Firestore إلى Podfile
    pod 'Firebase/Firestore'
    
    # Optionally, include the Swift extensions if you're using Swift.
    pod 'FirebaseFirestoreSwift'
    
  3. احفظ الملف وقم بتشغيل pod install .

جافا

  1. اتبع التعليمات لإضافة Firebase إلى تطبيق Android الخاص بك .
  2. في ملف build.gradle مستوى المشروع ، تأكد من تضمين مستودع Google Maven في كل من buildscript الخاص بك buildscript allprojects .
  3. باستخدام Firebase Android BoM ، أعلن عن تبعية مكتبة Cloud Firestore Android في ملف Gradle ( على مستوى التطبيق) للوحدة النمطية (عادةً app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:25.12.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 Android BoM ، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase Android.

    (بديل) قم بتعريف تبعيات مكتبة 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:21.7.1'
    }
    

Kotlin + KTX

  1. اتبع التعليمات لإضافة Firebase إلى تطبيق Android الخاص بك .
  2. في ملف build.gradle مستوى المشروع ، تأكد من تضمين مستودع Google Maven في كل من buildscript الخاص بك allprojects أقسام allprojects .
  3. باستخدام Firebase Android BoM ، أعلن عن تبعية مكتبة Cloud Firestore Android في ملف Gradle ( على مستوى التطبيق) للوحدة النمطية (عادةً app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:25.12.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 Android BoM ، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase Android.

    (بديل) قم بتعريف تبعيات مكتبة 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:21.7.1'
    }
    
جافا
  1. أضف Firebase Admin SDK إلى تطبيقك:
    • باستخدام Gradle:
      compile 'com.google.firebase:firebase-admin:7.0.1'
      
    • باستخدام Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>7.0.1</version>
      </dependency>
           
  2. اتبع الإرشادات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
بايثون
  1. أضف Firebase Admin SDK إلى تطبيق Python الخاص بك:
    pip install --upgrade firebase-admin
  2. اتبع الإرشادات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
C ++
  1. اتبع التعليمات لإضافة Firebase إلى مشروع C ++ الخاص بك .
  2. واجهة C ++ لنظام Android.
    • تبعيات 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 إلى مشروع Unity الخاص بك .
  2. واجهة الوحدة لنظام Android.
  3. عند الإنشاء لنظام Android ، قم بتمكين ProGuarding لتجنب حد Android DEX. للقيام بذلك ، في محرر الوحدة:

    1. حدد ملف> إعدادات البناء
    2. بدّل "النظام الأساسي" إلى "Android" وانقر على "تبديل النظام الأساسي"
    3. انقر فوق "إعدادات المشغل ..."
    4. في واجهة مستخدم Unity الرئيسية ، ضمن "إعدادات Android" ، حدد "إعدادات النشر"
    5. ضمن قسم "تصغير" ، قم بتغيير إعدادات الإصدار وتصحيح الأخطاء من "بلا" إلى "ProGuard"
Node.js
  1. أضف Firebase Admin SDK إلى تطبيقك:
    npm install firebase-admin --save
  2. اتبع الإرشادات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
اذهب
  1. أضف Firebase Admin SDK إلى تطبيق Go:
    go get firebase.google.com/go
    
  2. اتبع الإرشادات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
بي أتش بي
  1. تستخدم مكتبات عميل خادم Cloud Firestore (Java و Node.js و Python و Go و PHP و C # و Ruby) بيانات اعتماد تطبيق Google الافتراضية للمصادقة.
    • للمصادقة من بيئة التطوير لديك ، اضبط متغير بيئة GOOGLE_APPLICATION_CREDENTIALS للإشارة إلى ملف مفتاح حساب خدمة JSON يمكنك إنشاء ملف مفتاح على صفحة بيانات اعتماد وحدة تحكم API .
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • في بيئة الإنتاج الخاصة بك ، لا تحتاج إلى المصادقة إذا قمت بتشغيل تطبيقك على App Engine أو Compute Engine ، باستخدام نفس المشروع الذي تستخدمه لـ Cloud Firestore. خلاف ذلك ، قم بإعداد حساب الخدمة .
  2. قم بتثبيت وتمكين ملحق gRPC لـ PHP ، والذي ستحتاج إليه لاستخدام مكتبة العميل.
  3. أضف مكتبة Cloud Firestore PHP إلى تطبيقك:
    composer require google/cloud-firestore
سي #
  1. تستخدم مكتبات عميل خادم Cloud Firestore (Java و Node.js و Python و Go و PHP و C # و Ruby) بيانات اعتماد تطبيق Google الافتراضية للمصادقة.
    • للمصادقة من بيئة التطوير الخاصة بك ، قم بتعيين متغير بيئة GOOGLE_APPLICATION_CREDENTIALS للإشارة إلى ملف مفتاح حساب خدمة JSON. يمكنك إنشاء ملف مفتاح على صفحة بيانات اعتماد وحدة تحكم API .
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • في بيئة الإنتاج الخاصة بك ، لا تحتاج إلى المصادقة إذا قمت بتشغيل تطبيقك على App Engine أو Compute Engine ، باستخدام نفس المشروع الذي تستخدمه لـ Cloud Firestore. خلاف ذلك ، قم بإعداد حساب الخدمة .
  2. أضف مكتبة Cloud Firestore C # إلى تطبيقك في ملف .csproj :
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. أضف ما يلي إلى ملف Program.cs الخاص بك:
    using Google.Cloud.Firestore;
روبي
  1. تستخدم مكتبات عميل خادم Cloud Firestore (Java و Node.js و Python و Go و PHP و C # و Ruby) بيانات اعتماد تطبيق Google الافتراضية للمصادقة.
    • للمصادقة من بيئة التطوير الخاصة بك ، قم بتعيين متغير بيئة GOOGLE_APPLICATION_CREDENTIALS للإشارة إلى ملف مفتاح حساب خدمة JSON. يمكنك إنشاء ملف مفتاح على صفحة بيانات اعتماد وحدة تحكم API .
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • في بيئة الإنتاج الخاصة بك ، لا تحتاج إلى المصادقة إذا قمت بتشغيل تطبيقك على App Engine أو Compute Engine ، باستخدام نفس المشروع الذي تستخدمه لـ Cloud Firestore. خلاف ذلك ، قم بإعداد حساب الخدمة .
  2. أضف مكتبة Cloud Firestore Ruby إلى تطبيقك في Gemfile :
    gem "google-cloud-firestore"
  3. قم بتثبيت التبعيات من Gemfile الخاص بك باستخدام:
    bundle install

تهيئة Cloud Firestore

تهيئة مثيل Cloud Firestore:

الويب
// 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` لتطبيق الويب الخاص بك. لاستمرار البيانات عندما يفقد الجهاز الاتصال ، راجع توثيق تمكين البيانات دون اتصال .
سويفت
import Firebase

FirebaseApp.configure()

let db = Firestore.firestore()
ج موضوعية
@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();

Kotlin + KTX

// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
جافا
تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin SDK .
  • التهيئة على Google Cloud Platform
    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use the application default credentials
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .setProjectId(projectId)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
    
  • التهيئة على الخادم الخاص بك

    لاستخدام Firebase Admin SDK على خادمك الخاص ، استخدم حساب الخدمة .

    انتقل إلى IAM والمسؤول> حسابات الخدمة في Cloud Platform Console. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف 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 بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin SDK .
  • التهيئة على Google Cloud Platform
    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()
    
  • التهيئة على الخادم الخاص بك

    لاستخدام Firebase Admin SDK على خادمك الخاص ، استخدم حساب الخدمة .

    انتقل إلى IAM والمسؤول> حسابات الخدمة في وحدة تحكم Cloud Platform. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف 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()
    
  • C ++
    // Make sure the call to `Create()` happens some time before you call Firestore::GetInstance().
    App::Create();
    Firestore* db = Firestore::GetInstance();
    
    Node.js
    تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin SDK .
    • التهيئة على وظائف السحابة
      const admin = require('firebase-admin');
      admin.initializeApp();
      
      const db = admin.firestore();
      
      
    • التهيئة على Google Cloud Platform
      const admin = require('firebase-admin');
      
      admin.initializeApp({
        credential: admin.credential.applicationDefault()
      });
      
      const db = admin.firestore();
      
    • التهيئة على الخادم الخاص بك

      لاستخدام Firebase Admin SDK على خادمك الخاص (أو أي بيئة Node.js أخرى) ، استخدم حساب الخدمة . انتقل إلى IAM والمسؤول> حسابات الخدمة في وحدة تحكم Cloud Platform. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. ثم استخدم الملف لتهيئة SDK:

      const admin = require('firebase-admin');
      
      const serviceAccount = require('./path/to/serviceAccountKey.json');
      
      admin.initializeApp({
        credential: admin.credential.cert(serviceAccount)
      });
      
      const db = admin.firestore();
      
      
    اذهب
    تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin SDK .
  • التهيئة على Google Cloud Platform
    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()
    
  • التهيئة على الخادم الخاص بك

    لاستخدام Firebase Admin SDK على خادمك الخاص ، استخدم حساب الخدمة .

    انتقل إلى IAM والمسؤول> حسابات الخدمة في Cloud Platform Console. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف 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()
    
  • بي أتش بي
    use Google\Cloud\Firestore\FirestoreClient;
    
    /**
     * Initialize Cloud Firestore with default project ID.
     * ```
     * initialize();
     * ```
     */
    function initialize()
    {
        // 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;
    
    سي #
    FirestoreDb db = FirestoreDb.Create(project);
    Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
    
    روبي
    require "google/cloud/firestore"
    
    firestore = Google::Cloud::Firestore.new project_id: project_id
    
    puts "Created Cloud Firestore client with given project ID."
    

    إضافة البيانات

    يقوم Cloud Firestore بتخزين البيانات في المستندات ، والتي يتم تخزينها في المجموعات. ينشئ Cloud Firestore مجموعات ووثائق ضمنيًا في المرة الأولى التي تضيف فيها البيانات إلى المستند. لا تحتاج إلى إنشاء مجموعات أو مستندات بشكل صريح.

    إنشاء مجموعة جديدة ومستند باستخدام رمز المثال التالي.

    الويب
    db.collection("users").add({
        first: "Ada",
        last: "Lovelace",
        born: 1815
    })
    .then(function(docRef) {
        console.log("Document written with ID: ", docRef.id);
    })
    .catch(function(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)")
        }
    }
    
    ج موضوعية
    // 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);
                }
            });
    

    Kotlin + 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
    })
      
    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()
                  << '\n';
      } else {
        std::cout << "Error adding document: " << future.error_message() << '\n';
      }
    });
      
    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)
    }
      
    بي أتش بي
    $docRef = $db->collection('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.");
    });
      
    سي #
    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 . لاحظ أن هذا المستند يتضمن زوجًا من قيم المفاتيح (الاسم الأوسط) لا يظهر في المستند الأول. يمكن أن تحتوي المستندات الموجودة في مجموعة على مجموعات مختلفة من المعلومات.

    الويب
    // Add a second document with a generated ID.
    db.collection("users").add({
        first: "Alan",
        middle: "Mathison",
        last: "Turing",
        born: 1912
    })
    .then(function(docRef) {
        console.log("Document written with ID: ", docRef.id);
    })
    .catch(function(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)")
        }
    }
    
    ج موضوعية
    // 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);
                }
            });
    

    Kotlin + 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)
        }
    
    جافا
    84 ف ف 223400
    بايثون
    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
    })
      
    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() << '\n';
          } else {
            std::cout << "Error adding document: " << future.error_message()
                      << '\n';
          }
        });
      
    Node.js
    const aTuringRef = db.collection('users').doc('aturing');
    
    await aTuringRef.set({
      'first': 'Alan',
      'middle': 'Mathison',
      'last': 'Turing',
      'born': 1912
    });
      
    اذهب
    341010669 د
    بي أتش بي
    $docRef = $db->collection('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.");
    });
      
    سي #
    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."
      

    إقرأ البيانات

    للتحقق بسرعة من أنك أضفت البيانات إلى Cloud Firestore ، استخدم عارض البيانات في وحدة تحكم Firebase .

    يمكنك أيضًا استخدام طريقة "get" لاسترداد المجموعة بأكملها.

    الويب
    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())")
            }
        }
    }
    
    ج موضوعية
    [[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()}')
      
    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 << '\n';
        }
      } else {
        std::cout << "Error getting documents: " << future.error_message()
                  << '\n';
      }
    });
      
    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())
    }
      
    بي أتش بي
    $usersRef = $db->collection('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.");
    });
      
    سي #
    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();
    }
      
    روبي
    95 سيف 603

    تأمين البيانات الخاصة بك

    إذا كنت تستخدم Web أو Android أو iOS SDK ، فاستخدم مصادقة Firebase وقواعد أمان Cloud 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 .

    الخطوات التالية

    تعميق معرفتك بالمواضيع التالية: