ابدأ مع Cloud Firestore

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

إنشاء قاعدة بيانات Cloud Firestore

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

  2. انتقل إلى قسم Cloud 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، حدد الوضع المقفل.

    سيتم تطبيق مجموعتك الأولية من قواعد أمان Cloud Firestore على قاعدة بيانات Cloud Firestore الافتراضية الخاصة بك. إذا قمت بإنشاء قواعد بيانات متعددة لمشروعك، فيمكنك نشر قواعد أمان Cloud Firestore لكل قاعدة بيانات.

  4. حدد موقعًا لقاعدة البيانات الخاصة بك.

    • يعد إعداد الموقع هذا هو موقع موارد Google Cloud Platform (GCP) الافتراضي لمشروعك. لاحظ أنه سيتم استخدام هذا الموقع لخدمات Google Cloud Platform في مشروعك الذي يتطلب إعداد موقع، على وجه التحديد، مجموعة Cloud Storage الافتراضية وتطبيق App Engine (المطلوب إذا كنت تستخدم Cloud Scholer).

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

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

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

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

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

Web namespaced API

  1. اتبع الإرشادات لإضافة Firebase إلى تطبيق الويب الخاص بك .
  2. أضف مكتبات Firebase وCloud Firestore إلى تطبيقك:
    <script src="https://www.gstatic.com/firebasejs/10.9.0/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/10.9.0/firebase-firestore-compat.js"></script>
    تتوفر أيضًا Cloud Firestore SDK كحزمة npm.
    npm install firebase@10.9.0 --save
    
    ستحتاج إلى طلب كل من Firebase وCloud Firestore يدويًا.
    import firebase from "firebase/compat/app";
    // Required for side-effects
    import "firebase/firestore";
    

Web modular API

  1. اتبع الإرشادات لإضافة Firebase إلى تطبيق الويب الخاص بك .
  2. يتوفر Cloud Firestore SDK كحزمة npm.
    npm install firebase@10.9.0 --save
    
    ستحتاج إلى استيراد كل من Firebase وCloud Firestore.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
    
دائرة الرقابة الداخلية +

اتبع الإرشادات لإضافة Firebase إلى تطبيق Apple الخاص بك .

استخدم Swift Package Manager لتثبيت تبعيات Firebase وإدارتها.

  1. في Xcode، مع فتح مشروع التطبيق الخاص بك، انتقل إلى File > Swift Packages > Add Package Dependency .
  2. عندما يُطلب منك ذلك، قم بإضافة مستودع Firebase Apple الأساسي لـ SDK:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. اختر مكتبة Firestore.
  5. عند الانتهاء، سيبدأ Xcode تلقائيًا في حل وتنزيل تبعياتك في الخلفية.
ذكري المظهر
  1. اتبع الإرشادات لإضافة Firebase إلى تطبيق Android الخاص بك .
  2. باستخدام Firebase Android BoM ، أعلن عن تبعية مكتبة Cloud Firestore لنظام Android في ملف Gradle الخاص بالوحدة النمطية (على مستوى التطبيق) (عادةً app/build.gradle.kts أو app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.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:24.11.0")
    }
    

    هل تبحث عن وحدة مكتبة خاصة بـ Kotlin؟ بدءًا من إصدار أكتوبر 2023 ، يمكن لمطوري Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمزيد من التفاصيل، راجع الأسئلة الشائعة حول هذه المبادرة ).

Dart

  1. إذا لم تكن قد قمت بذلك بالفعل، فقم بتكوين Firebase وتهيئته في تطبيق Flutter.
  2. من جذر مشروع Flutter الخاص بك، قم بتشغيل الأمر التالي لتثبيت المكون الإضافي:
    flutter pub add cloud_firestore
  3. بمجرد الانتهاء، أعد إنشاء تطبيق Flutter:
    flutter run
  4. اختياري: قم بتحسين أوقات إنشاء iOS وmacOS من خلال تضمين إطار العمل المُجمَّع مسبقًا.

    حاليًا، يعتمد Firestore SDK لنظام التشغيل iOS على التعليمات البرمجية التي قد يستغرق إنشاءها في Xcode ما يزيد عن 5 دقائق. لتقليل أوقات الإنشاء بشكل كبير، يمكنك استخدام نسخة مجمعة مسبقًا عن طريق إضافة هذا السطر إلى كتلة target 'Runner' do في ملف Podfile الخاص بك:

    target 'Runner' do
      use_frameworks!
      use_modular_headers!
    
      pod 'FirebaseFirestore',
        :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git',
        :tag => 'IOS_SDK_VERSION'
    
      flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
      target 'RunnerTests' do
        inherit! :search_paths
      end
    end

    استبدل IOS_SDK_VERSION بإصدار Firebase iOS SDK المحدد في ملف firebase_sdk_version.rb الخاص بـ firebase_core . إذا كنت لا تستخدم الإصدار الأحدث من firebase_core ، فابحث عن هذا الملف في ذاكرة التخزين المؤقت لحزمة Pub المحلية لديك (عادةً ~/.pub-cache ).

    بالإضافة إلى ذلك، تأكد من ترقية CocoaPods إلى الإصدار 1.9.1 أو أعلى:

    gem install cocoapods

    لمزيد من المعلومات، راجع المشكلة على GitHub .

جافا
  1. أضف Firebase Admin SDK إلى تطبيقك:
    • استخدام Gradle:
      compile 'com.google.firebase:firebase-admin:1.32.0'
      
    • باستخدام Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>1.32.0</version>
      </dependency>
           
  2. اتبع الإرشادات الموضحة أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
بايثون
  1. أضف Firebase Admin SDK إلى تطبيق Python الخاص بك:
    pip install --upgrade firebase-admin
  2. اتبع الإرشادات الموضحة أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
سي ++
  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 إلى مشروع Unity الخاص بك .
  2. استخدم واجهة Unity لتكوين مشروعك لتقليل إصدارات Android.
  3. يجب عليك تصغير البنية لتجنب ظهور الرسالة Error while merging dex archives .

    • يمكن العثور على هذا الخيار في إعدادات المشغل > Android > إعدادات النشر > تصغير .
    • قد تختلف الخيارات في الإصدارات المختلفة من Unity، لذا راجع وثائق Unity الرسمية ودليل تصحيح أخطاء Firebase Unity Build .
    • إذا، بعد تمكين التصغير، لا يزال عدد الطرق المرجعية يتجاوز الحد الأقصى، هناك خيار آخر وهو تمكين multidex في:
      • mainTemplate.gradle إذا تم تمكين قالب Gradle المخصص ضمن إعدادات المشغل
      • أو ملف build.gradle على مستوى الوحدة، إذا كنت تستخدم Android Studio لإنشاء المشروع الذي تم تصديره.
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

(اختياري) النموذج الأولي والاختبار باستخدام Firebase Local Emulator Suite

بالنسبة لمطوري الأجهزة المحمولة، قبل التحدث عن كيفية كتابة تطبيقك وقراءته من Cloud Firestore، دعنا نقدم مجموعة من الأدوات التي يمكنك استخدامها لإنشاء نموذج أولي واختبار وظيفة Cloud Firestore: Firebase Local Emulator Suite. إذا كنت تجرب نماذج بيانات مختلفة، أو تعمل على تحسين قواعد الأمان الخاصة بك، أو تعمل على إيجاد الطريقة الأكثر فعالية من حيث التكلفة للتفاعل مع الواجهة الخلفية، فقد تكون القدرة على العمل محليًا دون نشر الخدمات المباشرة فكرة رائعة.

يعد محاكي Cloud Firestore جزءًا من Local Emulator Suite، الذي يمكّن تطبيقك من التفاعل مع محتوى قاعدة البيانات التي تمت محاكاتها وتكوينها، بالإضافة إلى موارد المشروع التي تمت محاكاتها بشكل اختياري (الوظائف وقواعد البيانات الأخرى وقواعد الأمان).

يتضمن استخدام محاكي Cloud Firestore بضع خطوات فقط:

  1. إضافة سطر من التعليمات البرمجية إلى التكوين التجريبي لتطبيقك للاتصال بالمحاكي.
  2. من جذر دليل مشروعك المحلي، قم بتشغيل firebase emulators:start .
  3. إجراء مكالمات من الكود الأولي لتطبيقك باستخدام منصة Cloud Firestore SDK كالمعتاد.

تتوفر إرشادات تفصيلية تتضمن Cloud Firestore وCloud Functions . يجب عليك أيضًا إلقاء نظرة على مقدمة Local Emulator Suite .

تهيئة Cloud Firestore

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

Web modular API

import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://support.google.com/firebase/answer/7015592
const firebaseConfig = {
    FIREBASE_CONFIGURATION
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Cloud Firestore and get a reference to the service
const db = getFirestore(app);

استبدل FIREBASE_CONFIGURATION بـ firebaseConfig الخاص بتطبيق الويب الخاص بك.

للاحتفاظ بالبيانات عندما يفقد الجهاز اتصاله، راجع وثائق تمكين البيانات دون اتصال .

Web namespaced API

import firebase from "firebase/app";
import "firebase/firestore";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://support.google.com/firebase/answer/7015592
const firebaseConfig = {
    FIREBASE_CONFIGURATION
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Cloud Firestore and get a reference to the service
const db = firebase.firestore();

استبدل FIREBASE_CONFIGURATION بـ firebaseConfig الخاص بتطبيق الويب الخاص بك.

للاحتفاظ بالبيانات عندما يفقد الجهاز اتصاله، راجع وثائق تمكين البيانات دون اتصال .

سويفت
ملاحظة: هذا المنتج غير متوفر في أنظمة watchOS وApp Clip.
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
ج موضوعية
ملاحظة: هذا المنتج غير متوفر في أنظمة watchOS وApp Clip.
@import FirebaseCore;
@import FirebaseFirestore;

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

Kotlin+KTX

// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore

Java

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

Dart

db = FirebaseFirestore.instance;
جافا
تتم تهيئة Cloud Firestore SDK بطرق مختلفة حسب البيئة الخاصة بك. وفيما يلي الأساليب الأكثر شيوعا. للحصول على مرجع كامل، راجع تهيئة Admin 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();
    
  • التهيئة على الخادم الخاص بك

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

    انتقل إلى IAM & admin > حسابات الخدمة في وحدة تحكم Google Cloud. قم بإنشاء مفتاح خاص جديد واحفظ ملف JSON. ثم استخدم الملف لتهيئة SDK:

    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use a service account
    InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json");
    GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount);
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
    
  • بايثون
    تتم تهيئة Cloud Firestore SDK بطرق مختلفة حسب البيئة الخاصة بك. وفيما يلي الأساليب الأكثر شيوعا. للحصول على مرجع كامل، راجع تهيئة Admin SDK .
  • التهيئة على Google Cloud
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

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

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore.client()
  • التهيئة على الخادم الخاص بك

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

    انتقل إلى IAM & admin > حسابات الخدمة في وحدة تحكم Google Cloud. قم بإنشاء مفتاح خاص جديد واحفظ ملف JSON. ثم استخدم الملف لتهيئة SDK:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore.client()
  • Python

    تتم تهيئة Cloud Firestore SDK بطرق مختلفة حسب البيئة الخاصة بك. وفيما يلي الأساليب الأكثر شيوعا. للحصول على مرجع كامل، راجع تهيئة Admin SDK .
  • التهيئة على Google Cloud
    import firebase_admin
    from firebase_admin import firestore_async
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore_async.client()

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

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore_async
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore_async.client()
  • التهيئة على الخادم الخاص بك

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

    انتقل إلى IAM & admin > حسابات الخدمة في وحدة تحكم Google Cloud. قم بإنشاء مفتاح خاص جديد واحفظ ملف JSON. ثم استخدم الملف لتهيئة SDK:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore_async
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore_async.client()
  • سي ++
    // 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 { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • التهيئة على Google Cloud
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp({
        credential: applicationDefault()
      });
      
      const db = getFirestore();
    • التهيئة على الخادم الخاص بك

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

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

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

    انتقل إلى IAM & admin > حسابات الخدمة في وحدة تحكم Google Cloud. قم بإنشاء مفتاح خاص جديد واحفظ ملف 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()
    
  • بي أتش بي

    بي أتش بي

    لمعرفة المزيد حول تثبيت وإنشاء عميل Cloud Firestore، راجع مكتبات عميل Cloud Firestore .

    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;
    ج #

    ج #

    لمعرفة المزيد حول تثبيت وإنشاء عميل Cloud Firestore، راجع مكتبات عميل Cloud Firestore .

    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 بإنشاء مجموعات ومستندات ضمنيًا في المرة الأولى التي تضيف فيها بيانات إلى المستند. لا تحتاج إلى إنشاء مجموعات أو مستندات بشكل صريح.

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

    Web modular API

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

    Web namespaced API

    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 Clip.
    // Add a new document with a generated ID
    do {
      let ref = try await db.collection("users").addDocument(data: [
        "first": "Ada",
        "last": "Lovelace",
        "born": 1815
      ])
      print("Document added with ID: \(ref.documentID)")
    } catch {
      print("Error adding document: \(error)")
    }
    ج موضوعية
    ملاحظة: هذا المنتج غير متوفر في أنظمة watchOS وApp Clip.
    // 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);
          }
        }];

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

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

    Dart

    // Create a new user with a first and last name
    final user = <String, dynamic>{
      "first": "Ada",
      "last": "Lovelace",
      "born": 1815
    };
    
    // Add a new document with a generated ID
    db.collection("users").add(user).then((DocumentReference doc) =>
        print('DocumentSnapshot added with ID: ${doc.id}'));
    جافا
    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("users").document("alovelace")
    doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})

    Python

    doc_ref = db.collection("users").document("alovelace")
    await doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})
    سي ++
    // 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)
    }
    بي أتش بي

    بي أتش بي

    لمعرفة المزيد حول تثبيت وإنشاء عميل Cloud Firestore، راجع مكتبات عميل Cloud Firestore .

    $docRef = $db->collection('samples/php/users')->document('alovelace');
    $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 . لاحظ أن هذا المستند يتضمن زوجًا من القيمة الرئيسية (الاسم الأوسط) لا يظهر في المستند الأول. يمكن أن تحتوي المستندات الموجودة في المجموعة على مجموعات مختلفة من المعلومات.

    Web modular API

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

    Web namespaced API

    // 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 Clip.
    // Add a second document with a generated ID.
    do {
      let ref = try await db.collection("users").addDocument(data: [
        "first": "Alan",
        "middle": "Mathison",
        "last": "Turing",
        "born": 1912
      ])
      print("Document added with ID: \(ref.documentID)")
    } catch {
      print("Error adding document: \(error)")
    }
    ج موضوعية
    ملاحظة: هذا المنتج غير متوفر في أنظمة watchOS وApp Clip.
    // 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);
          }
        }];

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

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

    Dart

    // Create a new user with a first and last name
    final user = <String, dynamic>{
      "first": "Alan",
      "middle": "Mathison",
      "last": "Turing",
      "born": 1912
    };
    
    // Add a new document with a generated ID
    db.collection("users").add(user).then((DocumentReference doc) =>
        print('DocumentSnapshot added with ID: ${doc.id}'));
    جافا
    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("users").document("aturing")
    doc_ref.set({"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912})

    Python

    doc_ref = db.collection("users").document("aturing")
    await doc_ref.set(
        {"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912}
    )
    سي ++
    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)
    }
    بي أتش بي

    بي أتش بي

    لمعرفة المزيد حول تثبيت وإنشاء عميل Cloud Firestore، راجع مكتبات عميل Cloud Firestore .

    $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.");
    });
    ج #
    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."

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

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

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

    Web modular API

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

    Web namespaced API

    db.collection("users").get().then((querySnapshot) => {
        querySnapshot.forEach((doc) => {
            console.log(`${doc.id} => ${doc.data()}`);
        });
    });
    سويفت
    ملاحظة: هذا المنتج غير متوفر في أنظمة watchOS وApp Clip.
    do {
      let snapshot = try await db.collection("users").getDocuments()
      for document in snapshot.documents {
        print("\(document.documentID) => \(document.data())")
      }
    } catch {
      print("Error getting documents: \(error)")
    }
    ج موضوعية
    ملاحظة: هذا المنتج غير متوفر في أنظمة watchOS وApp Clip.
    [[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);
            }
          }
        }];

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

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

    Dart

    await db.collection("users").get().then((event) {
      for (var doc in event.docs) {
        print("${doc.id} => ${doc.data()}");
      }
    });
    جافا
    // 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("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")

    Python

    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    async for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    سي ++
    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())
    }
    بي أتش بي

    بي أتش بي

    لمعرفة المزيد حول تثبيت وإنشاء عميل Cloud Firestore، راجع مكتبات عميل Cloud Firestore .

    $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.");
    });
    ج #
    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 للويب أو Android أو Apple، فاستخدم مصادقة Firebase وقواعد أمان Cloud Firestore لتأمين بياناتك في Cloud Firestore.

    فيما يلي بعض مجموعات القواعد الأساسية التي يمكنك استخدامها للبدء. يمكنك تعديل قواعد الأمان الخاصة بك في علامة التبويب "القواعد" بوحدة التحكم.

    المصادقة مطلوبة

    // Allow read/write access to a document keyed by the user's UID
    service cloud.firestore {
      match /databases/{database}/documents {
        match /users/{uid} {
          allow read, write: if request.auth != null && request.auth.uid == uid;
        }
      }
    }
    

    وضع مغلق

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

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

    إذا كنت تستخدم إحدى مجموعات SDK للخادم، فاستخدم إدارة الهوية والوصول (IAM) لتأمين بياناتك في Cloud Firestore.

    شاهد فيديو تعليمي

    للحصول على إرشادات تفصيلية حول بدء استخدام مكتبات عملاء Cloud Firestore للأجهزة المحمولة، شاهد أحد مقاطع الفيديو التعليمية التالية:

    ويب
    دائرة الرقابة الداخلية +
    ذكري المظهر

    يمكنك العثور على المزيد من مقاطع الفيديو في قناة Firebase على YouTube .

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

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