بدء استخدام Cloud Firestore

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

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

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

  2. انتقِل إلى القسم Cloud Firestore في وحدة تحكُّم Firebase سيُطلب منك اختيار مشروع حالي في Firebase. اتّبِع سير عمل إنشاء قاعدة البيانات.

  3. اختَر وضع بدء لقواعد أمان Cloud Firestore:

    وضع الاختبار

    جيدة لبدء استخدام مكتبات برامج الجوّال والويب، ولكنه يتيح لأي شخص قراءة بياناتك واستبدالها. بعد الاختبار، اجعل احرص على مراجعة قسم تأمين بياناتك.

    لبدء استخدام الويب أو أنظمة Apple الأساسية أو حزمة تطوير البرامج (SDK) لنظام التشغيل Android، اختَر وضع الاختبار.

    وضع القفل

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

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

  5. انقر على تم.

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

إعداد بيئة التطوير

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

Web

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

Web

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

اتّبِع التعليمات إضافة Firebase إلى تطبيق Apple

يمكنك استخدام "مدير حزم Swift" لتثبيت اعتماديات Firebase وإدارتها.

  1. في Xcode، انتقِل إلى File (ملف) > بعد فتح مشروع التطبيق الخاص بك. حزم Swift > أضِف تبعية الحزمة.
  2. أضِف مستودع حزمة تطوير البرامج (SDK) لمنصّات Firebase Apple عندما يُطلب منك ذلك:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. اختَر مكتبة Firestore.
  5. عند الانتهاء، سيبدأ Xcode تلقائيًا في حل وتنزيل ملف والتبعيات في الخلفية.
Android
  1. اتّبِع التعليمات إضافة Firebase إلى تطبيقك على Android
  2. باستخدام BoM Android في Firebase، أعلن عن التبعية لمكتبة 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:33.1.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")
    }
    

    من خلال استخدام BoM Android في Firebase، سيستخدم تطبيقك دائمًا الإصدارات المتوافقة من Firebase Android المكتبات.

    (بديل) يمكنك تعريف اعتماديات مكتبة Firebase بدون استخدام قائمة مواد العرض

    إذا اختَرت عدم استخدام قائمة عمليات Firebase، يجب تحديد كل إصدار مكتبة 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:25.0.0")
    }
    

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

Dart

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

    في الوقت الحالي، تعتمد حزمة تطوير البرامج (SDK) في Firestore لنظام التشغيل iOS على الرمز الذي يمكن أن ما يصل إلى 5 دقائق للإنشاء في Xcode. لتقليل مُدد التصميم يمكنك استخدام نسخة مجمعة مسبقًا من خلال إضافة هذا السطر كتلة 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_core" firebase_sdk_version.rb الملف. إذا كنت لا تستخدم أحدث إصدار من firebase_core، ابحث عن هذا الملف في حزمة Pub المحلية ذاكرة التخزين المؤقت (عادةً ~/.pub-cache).

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

    gem install cocoapods

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

جافا
  1. أضِف حزمة تطوير البرامج (SDK) لمشرف Firebase إلى تطبيقك:
    • استخدام 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 مع بيانات الاعتماد المناسبة في بيئتك.
Python
  1. أضِف حزمة تطوير البرامج (SDK) لمشرف Firebase إلى تطبيق 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++.
Unity
  1. اتّبِع التعليمات إضافة Firebase إلى Unity مشروعك.
  2. استخدِم واجهة Unity لضبط مشروعك على تقليل إصدارات Android.
  3. عليك تصغير الإصدار لتجنُّب الرسالة Error while merging dex archives.

    • يمكن العثور على الخيار في إعدادات المشغّل > Android > جارٍ النشر الإعدادات > تصغير.
    • قد تختلف الخيارات في إصدارات مختلفة من Unity، لذا يُرجى الرجوع إلى وثائق الوحدة الرسمية دليل تصحيح الأخطاء لإنشاء Unity من Firebase
    • بعد تفعيل تصغير البيانات، ما زال عدد الطرق المُشار إليها يتجاوز الحد الأقصى المسموح به، فهناك خيار آخر وهو تفعيل multidex في:
      • mainTemplate.gradle في حال تفعيل نموذج Gradle المخصّص ضمن إعدادات المشغّل
      • أو ملف build.gradle على مستوى الوحدة، في حال استخدام "استوديو Android" لإنشاء المشروع الذي تم تصديره.
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. تستخدم مكتبات عملاء خادم Cloud Firestore (Java وNode.js وPython وGo وPHP وC# وRuby) بيانات الاعتماد التلقائية لتطبيق Google للمصادقة.
    • للمصادقة من بيئة التطوير، اضبط GOOGLE_APPLICATION_CREDENTIALS متغير البيئة للإشارة إلى ملف مفتاح حساب خدمة JSON. يمكنك إنشاء ملف مفتاح في صفحة بيانات اعتماد وحدة تحكم واجهة برمجة التطبيقات.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • في بيئة الإنتاج، لا تحتاج إلى مصادقة إذا شغّلت التطبيق في App Engine أو Compute Engine، باستخدام المشروع نفسه الذي تستخدمه في Cloud Firestore. وإلا، إعداد حساب خدمة
  2. تثبيت إضافة gRPC وتفعيلها للغة PHP، والذي ستحتاج إلى استخدام مكتبة البرامج فيه.
  3. إضافة مكتبة PHP في Cloud Firestore إلى تطبيقك:
    composer require google/cloud-firestore
#C
  1. تستخدم مكتبات عملاء خادم Cloud Firestore (Java وNode.js وPython وGo وPHP وC# وRuby) بيانات الاعتماد التلقائية لتطبيق Google للمصادقة.
    • للمصادقة من بيئة التطوير، اضبط GOOGLE_APPLICATION_CREDENTIALS متغير البيئة للإشارة إلى ملف مفتاح حساب خدمة JSON. يمكنك إنشاء ملف مفتاح في صفحة بيانات اعتماد وحدة تحكم واجهة برمجة التطبيقات.
      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;
لغة Ruby
  1. تستخدم مكتبات عملاء خادم Cloud Firestore (Java وNode.js وPython وGo وPHP وC# وRuby) بيانات الاعتماد التلقائية لتطبيق Google للمصادقة.
    • للمصادقة من بيئة التطوير، اضبط GOOGLE_APPLICATION_CREDENTIALS متغير البيئة للإشارة إلى ملف مفتاح حساب خدمة JSON. يمكنك إنشاء ملف مفتاح في صفحة بيانات اعتماد وحدة تحكم واجهة برمجة التطبيقات.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • في بيئة الإنتاج، لا تحتاج إلى مصادقة إذا شغّلت التطبيق في App Engine أو Compute Engine، باستخدام المشروع نفسه الذي تستخدمه في Cloud Firestore. وإلا، إعداد حساب خدمة
  2. إضافة مكتبة Ruby في Cloud Firestore إلى تطبيقك في Gemfile:
    gem "google-cloud-firestore"
  3. ثبِّت الاعتماديات من Gemfile باستخدام:
    bundle install

(اختياري) إنشاء نموذج أولي واختباره باستخدام "حزمة أدوات المحاكاة المحلية من Firebase"

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

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

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

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

تتوفر جولة تفصيلية تشمل Cloud Firestore وCloud Functions. ومن المفترض أيضًا أن تُلقي نظرة على مقدمة حول مجموعة أدوات المحاكاة المحلية.

إعداد Cloud Firestore

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

Web

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

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;
جافا
يتم إعداد حزمة تطوير البرامج (SDK) في Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. كمرجع كامل، الرؤية إعداد SDK للمشرف.
  • الإعداد على Google Cloud
    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use the application default credentials
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .setProjectId(projectId)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
    
  • الإعداد على خادمك الخاص

    لاستخدام SDK لمشرف Firebase على خادمك، استخدم حساب الخدمة.

    الانتقال إلى إدارة الهوية وإمكانية الوصول (IAM) المشرف > حسابات الخدمة في وحدة تحكُّم 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();
    
  • Python
    يتم إعداد حزمة تطوير البرامج (SDK) في Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. كمرجع كامل، الرؤية إعداد SDK للمشرف.
  • الإعداد على Google Cloud
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

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

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

    لاستخدام SDK لمشرف Firebase على خادمك، استخدم حساب الخدمة.

    الانتقال إلى إدارة الهوية وإمكانية الوصول (IAM) المشرف > حسابات الخدمة في وحدة تحكُّم 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

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

    لاستخدام SDK لمشرف Firebase على خادمك، استخدم حساب الخدمة.

    الانتقال إلى إدارة الهوية وإمكانية الوصول (IAM) المشرف > حسابات الخدمة في وحدة تحكُّم 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()
  • 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, Filter } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • الإعداد على Google Cloud
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp({
        credential: applicationDefault()
      });
      
      const db = getFirestore();
    • الإعداد على خادمك الخاص

      لاستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase على خادمك (أو أي بيئة Node.js أخرى)، استخدام حساب خدمة انتقل إلى إدارة الهوية وإمكانية الوصول المشرف > حسابات الخدمة في Google Cloud Console. أنشِئ مفتاحًا خاصًا جديدًا واحفظ ملف 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();
      
    انتقال
    يتم إعداد حزمة تطوير البرامج (SDK) في Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. كمرجع كامل، الرؤية إعداد SDK للمشرف.
  • الإعداد على Google Cloud
    import (
      "log"
    
      firebase "firebase.google.com/go"
      "google.golang.org/api/option"
    )
    
    // Use the application default credentials
    ctx := context.Background()
    conf := &firebase.Config{ProjectID: projectID}
    app, err := firebase.NewApp(ctx, conf)
    if err != nil {
      log.Fatalln(err)
    }
    
    client, err := app.Firestore(ctx)
    if err != nil {
      log.Fatalln(err)
    }
    defer client.Close()
    
  • الإعداد على خادمك الخاص

    لاستخدام SDK لمشرف Firebase على خادمك، استخدم حساب الخدمة.

    الانتقال إلى إدارة الهوية وإمكانية الوصول (IAM) المشرف > حسابات الخدمة في وحدة تحكُّم 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()
    
  • PHP

    PHP

    لمزيد من المعلومات حول تثبيت عميل 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);
        }
    }
    Unity
    using Firebase.Firestore;
    using Firebase.Extensions;
    FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
    #C

    #C

    لمزيد من المعلومات حول تثبيت عميل Cloud Firestore وإنشائه، يُرجى الاطّلاع على مكتبات عميل Cloud Firestore

    FirestoreDb db = FirestoreDb.Create(project);
    Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
    لغة Ruby
    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

    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

    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);
    });
    Swift
    ملاحظة: لا يتوفّر هذا المنتج ضمن نظامَي التشغيل 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)")
    }
    Objective-C
    ملاحظة: لا يتوفّر هذا المنتج ضمن نظامَي التشغيل 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());
    Python
    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})
    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

    PHP

    لمزيد من المعلومات حول تثبيت عميل 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);
    Unity
    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);
    لغة Ruby
    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

    // 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

    // 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);
    });
    Swift
    ملاحظة: لا يتوفّر هذا المنتج ضمن نظامَي التشغيل 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)")
    }
    Objective-C
    ملاحظة: لا يتوفّر هذا المنتج ضمن نظامَي التشغيل 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());
    Python
    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}
    )
    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

    PHP

    لمزيد من المعلومات حول تثبيت عميل 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);
    Unity
    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);
    لغة Ruby
    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

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

    Web

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

    Web

    db.collection("users").get().then((querySnapshot) => {
        querySnapshot.forEach((doc) => {
            console.log(`${doc.id} => ${doc.data()}`);
        });
    });
    Swift
    ملاحظة: لا يتوفّر هذا المنتج ضمن نظامَي التشغيل 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)")
    }
    Objective-C
    ملاحظة: لا يتوفّر هذا المنتج ضمن نظامَي التشغيل 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"));
    }
    Python
    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()}")
    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

    PHP

    لمزيد من المعلومات حول تثبيت عميل 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);
    Unity
    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();
    }
    لغة Ruby
    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) الخاصة بالخادم، استخدِم إدارة الهوية وإمكانية الوصول. (إدارة الهوية وإمكانية الوصول) لتأمين بياناتك في Cloud Firestore.

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

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

    الويب
    iOS+
    Android

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

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

    عزِّز معرفتك من خلال المواضيع التالية: