يشرح لك دليل البدء السريع هذا كيفية إعداد Cloud Firestore، وإضافة البيانات، ثم عرض البيانات التي أضفتها للتو في وحدة تحكُّم Firebase.
إنشاء قاعدة بيانات Cloud Firestore
أنشئ مشروعًا في Firebase: في وحدة تحكُّم Firebase، انقر على إضافة مشروع، ثم اتّبِع التعليمات الظاهرة على الشاشة لإنشاء مشروع Firebase أو لإضافة خدمات Firebase إلى مشروع حالي على GCP.
انتقِل إلى قسم Cloud Firestore في وحدة تحكُّم Firebase. سيُطلب منك اختيار مشروع حالي في Firebase. اتّبع سير عمل إنشاء قاعدة البيانات.
اختَر وضع بدء لقواعد الأمان في 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 لكل قاعدة بيانات.
اختَر موقعًا جغرافيًا لقاعدة بياناتك.
إنّ إعداد الموقع الجغرافي هذا هو الموقع الجغرافي التلقائي لمورد Google Cloud Platform (GCP) لمشروعك. يُرجى ملاحظة أنّه سيتم استخدام هذا الموقع الجغرافي لخدمات Google Cloud Platform في مشروعك التي تتطلب إعدادًا للموقع الجغرافي، لا سيّما حزمة Cloud Storage التلقائية وتطبيق App Engine (وهو مطلوب في حال استخدام Cloud Scheduler).
إذا لم تتمكّن من اختيار موقع جغرافي، يعني هذا أنّ مشروعك يتضمّن موقعًا جغرافيًا تلقائيًا لمورد GCP. وقد تم تعيينه إما أثناء إنشاء المشروع أو عند إعداد خدمة أخرى تتطلب إعدادًا للموقع.
انقر على تم.
عند تفعيل Cloud Firestore، يتم أيضًا تفعيل واجهة برمجة التطبيقات في Cloud API Manager.
إعداد بيئة التطوير
أضِف التبعيات المطلوبة ومكتبات العملاء إلى تطبيقك.
واجهة برمجة تطبيقات مساحات الاسم على الويب
- اتّبِع تعليمات إضافة Firebase إلى تطبيق الويب.
- أضِف مكتبتَي Firebase وCloud Firestore إلى تطبيقك:
<script src="https://www.gstatic.com/firebasejs/10.11.1/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.11.1/firebase-firestore-compat.js"></script>
تتوفّر حزمة SDK الخاصة بـ Cloud Firestore أيضًا على شكل حزمة npm.npm install firebase@10.11.1 --save
عليك طلب كلّ من Firebase وCloud Firestore يدويًا.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
واجهة برمجة تطبيقات الويب النموذجية
- اتّبِع تعليمات إضافة Firebase إلى تطبيق الويب.
-
تتوفر حزمة تطوير البرامج (SDK) في Cloud Firestore كحزمة npm.
npm install firebase@10.11.1 --save
عليك استيراد كل من Firebase وCloud Firestore.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
اتّبِع التعليمات من أجل إضافة Firebase إلى تطبيق Apple.
استخدِم "مدير الحزم" في Swift لتثبيت تبعيات Firebase وإدارتها.
- في Xcode، بعد فتح مشروع التطبيق، انتقِل إلى File > Swift Packages > Add Package Priority (إضافة تبعية الحزمة). بعد ذلك.
- أضِف مستودع حزمة تطوير البرامج (SDK) لمنصة Firebase من Apple عندما يُطلب منك ذلك:
- اختَر مكتبة Firestore.
- عند الانتهاء، سيبدأ Xcode تلقائيًا في حل تبعياتك وتنزيلها في الخلفية.
https://github.com/firebase/firebase-ios-sdk
Android
- اتّبِع التعليمات من أجل إضافة Firebase إلى تطبيق Android.
- باستخدام
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.0.0")) // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore") }
باستخدام إطار عمل Android BoM على Firebase، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في Firebase.
(بديل) التعريف بتبعيات مكتبة Firebase بدون استخدام أداة BoM
إذا اختَرت عدم استخدام إطار عمل 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
- يجب إعداد Firebase وإعداده في تطبيق Flutter، إذا لم يسبق لك إجراء ذلك.
- من جذر مشروع Flutter، شغِّل الأمر التالي
لتثبيت المكوّن الإضافي:
flutter pub add cloud_firestore
- بعد اكتمال الخطوات، أعِد إنشاء تطبيق Flutter:
flutter run
- اختياري: يمكنك تحسين أوقات إصدار نظامَي التشغيل iOS وmacOS من خلال تضمين
إطار العمل المجمّع مسبقًا.
في الوقت الحالي، تعتمد حزمة تطوير البرامج (SDK) الخاصة بـ Firestore لنظام التشغيل 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 بإصدار حزمة تطوير البرامج (SDK) لمنصة Firebase لنظام التشغيل iOS والمحدّدة في ملف
firebase_sdk_version.rb
firebase_core
. إذا كنت لا تستخدم أحدث إصدار منfirebase_core
، ابحث عن هذا الملف في ذاكرة التخزين المؤقت لحزمة Pub المحلية (عادةً ما تكون~/.pub-cache
).بالإضافة إلى ذلك، يجب ترقية تطبيق CocoaPods إلى الإصدار 1.9.1 أو إصدار أحدث:
gem install cocoapods
لمزيد من المعلومات، يُرجى الاطّلاع على المشكلة على GitHub.
Java
- أضِف حزمة تطوير البرامج (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>
-
باستخدام Gradle:
- اتّبِع التعليمات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
Python
- أضِف حزمة SDK لمشرف Firebase إلى تطبيق Python:
pip install --upgrade firebase-admin
- اتّبِع التعليمات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
C++
- اتّبِع التعليمات من أجل إضافة Firebase إلى مشروع C++ الخاص بك.
- واجهة 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}")
- لإعداد دمج سطح المكتب، راجع إضافة Firebase إلى مشروع C++ الخاص بك.
Unity
- اتّبِع التعليمات لإضافة Firebase إلى مشروع Unity.
- استخدِم واجهة Unity لضبط مشروعك من أجل تصغير إصدارات Android.
- يمكن العثور على هذا الخيار في إعدادات المشغّل > Android > إعدادات النشر > تصغير.
- قد تختلف الخيارات في الإصدارات المختلفة من Unity، لذلك عليك الرجوع إلى مستندات Unity الرسمية ودليل تصحيح الأخطاء في إصدار Unity من Firebase.
-
إذا كان عدد الطرق المشار إليها يتجاوز الحدّ المسموح به بعد تفعيل ميزة تصغيره، يتوفّر خيار آخر وهو تفعيل
multidex
في:-
mainTemplate.gradle
في حال تفعيل نموذج Gradle المخصَّص ضمن إعدادات المشغِّل -
أو ملف
build.gradle
على مستوى الوحدة، إذا كنت تستخدم "استوديو Android" لإنشاء المشروع الذي يتم تصديره.
-
يجب تصغير الإصدار لتجنُّب ظهور الرسالة "Error while merging dex archives
".
Node.js
-
أضِف حزمة تطوير البرامج (SDK) لمشرف Firebase إلى تطبيقك:
npm install firebase-admin --save
- اتّبِع التعليمات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
Go
- أضِف حزمة SDK لمشرف Firebase إلى تطبيق Go:
go get firebase.google.com/go
- اتّبِع التعليمات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
PHP
-
تستخدم مكتبات عملاء الخادم 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. ويمكنك بدلاً من ذلك إعداد حساب خدمة.
-
للمصادقة من بيئة التطوير، اضبط متغيّر بيئة
- ثبِّت إضافة gRPC للغة PHP وفعِّلها، والتي ستحتاج إليها لاستخدام مكتبة البرامج.
-
أضِف مكتبة Cloud Firestore PHP إلى تطبيقك:
composer require google/cloud-firestore
C#
-
تستخدم مكتبات عملاء الخادم 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. ويمكنك بدلاً من ذلك إعداد حساب خدمة.
-
للمصادقة من بيئة التطوير، اضبط متغيّر بيئة
-
أضِف مكتبة Cloud Firestore C# إلى تطبيقك في ملف
.csproj
:<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
-
أضِف ما يلي إلى ملف
Program.cs
:using Google.Cloud.Firestore;
لغة Ruby
-
تستخدم مكتبات عملاء الخادم 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. ويمكنك بدلاً من ذلك إعداد حساب خدمة.
-
للمصادقة من بيئة التطوير، اضبط متغيّر بيئة
-
أضِف مكتبة Cloud Firestore Ruby إلى تطبيقك في
Gemfile
:gem "google-cloud-firestore"
-
ثبِّت البرامج الاعتمادية من
Gemfile
باستخدام:bundle install
(اختياري) إنشاء نموذج أولي واختباره باستخدام "مجموعة محاكي Firebase المحلية"
قبل الحديث عن كيفية كتابة محتوى التطبيق في Cloud Firestore وقراءته، سنعرّفهم على مجموعة من الأدوات التي يمكنهم استخدامها لإنشاء النماذج الأولية لوظائف Cloud Firestore واختبارها وهي: حزمة Firebase Local Emulator Suite. إذا كنت تجرب نماذج بيانات مختلفة، أو تعمل على تحسين قواعد الأمان، أو تعمل على إيجاد الطريقة الأكثر فعالية من حيث التكلفة للتفاعل مع الواجهة الخلفية، فإن القدرة على العمل محليًا بدون نشر خدمات مباشرة قد تكون فكرة رائعة.
محاكي Cloud Firestore هو جزء من حزمة Local Emulator Suite، التي تتيح لتطبيقك التفاعل مع محتوى قاعدة البيانات التي تمت محاكاتها وإعداداتها، بالإضافة إلى موارد المشروع التي تمت محاكاتها (الوظائف وقواعد البيانات الأخرى وقواعد الأمان) اختياريًا).
يتضمن استخدام محاكي Cloud Firestore بضع خطوات فقط:
- إضافة سطر من الرموز البرمجية إلى إعدادات اختبار تطبيقك للاتصال بالمحاكي.
- من جذر دليل المشروع المحلي، أثناء تشغيل
firebase emulators:start
. - إجراء الاتصالات من خلال الرمز الأولي للتطبيق باستخدام حزمة SDK للنظام الأساسي Cloud Firestore كالمعتاد.
تتوفّر جولة تفصيلية تشمل Cloud Firestore وCloud Functions. ويجب أيضًا أن تُلقي نظرة على مقدمة حول حزمة المحاكيات المحلية.
إعداد Cloud Firestore
تهيئة نسخة افتراضية من Cloud Firestore:
واجهة برمجة تطبيقات الويب النموذجية
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
لتطبيق الويب الخاص بك.
للاحتفاظ بالبيانات عند فقدان الجهاز للاتصال، يُرجى الاطّلاع على مستندات تفعيل البيانات بلا اتصال بالإنترنت.
واجهة برمجة تطبيقات مساحات الاسم على الويب
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
لتطبيق الويب الخاص بك.
للاحتفاظ بالبيانات عند فقدان الجهاز للاتصال، يُرجى الاطّلاع على مستندات تفعيل البيانات بلا اتصال بالإنترنت.
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
الهدف ج
@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;
Java
يتم إعداد Cloud Firestore SDK بطرق مختلفة بناءً على بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجع إعداد SDK للمشرف.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 على خادمك، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشِئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. ثم استخدِم الملف لإعداد SDK:
import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use a service account InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json"); GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
Python
يتم إعداد Cloud Firestore SDK بطرق مختلفة بناءً على بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجع إعداد SDK للمشرف.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 على خادمك، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشِئ مفتاحًا خاصًا جديدًا واحفظ ملف 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 بطرق مختلفة بناءً على بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجع إعداد SDK للمشرف.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 على خادمك، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشِئ مفتاحًا خاصًا جديدًا واحفظ ملف 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
يتم إعداد Cloud Firestore SDK بطرق مختلفة بناءً على بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجع إعداد 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();
Go
يتم إعداد Cloud Firestore SDK بطرق مختلفة بناءً على بيئتك. وفي ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجع إعداد SDK للمشرف.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 على خادمك، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشِئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. ثم استخدِم الملف لإعداد SDK:
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
PHP
PHP
لمزيد من المعلومات حول تثبيت برنامج Cloud Firestore وإنشائه، يُرجى الرجوع إلى مكتبات عميل Cloud Firestore.
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
C#
لمزيد من المعلومات حول تثبيت برنامج Cloud Firestore وإنشائه، يُرجى الرجوع إلى مكتبات عميل Cloud Firestore.
لغة Ruby
إضافة بيانات
تخزِّن Cloud Firestore البيانات في "المستندات"، والتي يتم تخزينها في "المجموعات". تنشئ Cloud Firestore مجموعات ووثائق بشكل ضمني في المرة الأولى التي تضيف فيها البيانات إلى المستند. لست بحاجة إلى إنشاء مجموعات أو مستندات بشكل صريح.
يمكنك إنشاء مجموعة جديدة ومستند باستخدام الرمز النموذجي التالي.
واجهة برمجة تطبيقات الويب النموذجية
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); }
واجهة برمجة تطبيقات مساحات الاسم على الويب
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
// 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
// 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}'));
Java
Python
Python
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
Go
PHP
PHP
لمزيد من المعلومات حول تثبيت برنامج Cloud Firestore وإنشائه، يُرجى الرجوع إلى مكتبات عميل Cloud Firestore.
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#
لغة Ruby
يمكنك الآن إضافة مستند آخر إلى المجموعة users
. لاحظ أن هذا المستند
يتضمن زوجًا من المفتاح/القيمة (الاسم الأوسط) لا يظهر في المستند
الأول. يمكن أن تحتوي المستندات في المجموعة على مجموعات مختلفة من المعلومات.
واجهة برمجة تطبيقات الويب النموذجية
// 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); }
واجهة برمجة تطبيقات مساحات الاسم على الويب
// 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
// 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
// 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}'));
Java
Python
Python
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
Go
PHP
PHP
لمزيد من المعلومات حول تثبيت برنامج Cloud Firestore وإنشائه، يُرجى الرجوع إلى مكتبات عميل Cloud Firestore.
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#
لغة Ruby
قراءة البيانات
يمكنك استخدام عارض البيانات في وحدة تحكُّم Firebase للتحقّق بسرعة من أنّك أضفت البيانات إلى Cloud Firestore.
ويمكنك أيضًا استخدام طريقة "get" لاسترداد المجموعة بأكملها.
واجهة برمجة تطبيقات الويب النموذجية
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
واجهة برمجة تطبيقات مساحات الاسم على الويب
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Swift
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
[[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()}"); } });
Java
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
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
Go
PHP
PHP
لمزيد من المعلومات حول تثبيت برنامج Cloud Firestore وإنشائه، يُرجى الرجوع إلى مكتبات عميل Cloud Firestore.
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#
لغة Ruby
تأمين بياناتك
إذا كنت تستخدم حزمة تطوير البرامج (SDK) الخاصة بأنظمة التشغيل Web أو 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، يمكنك مشاهدة أحد مقاطع الفيديو التعليمية التالية:
الويب
iOS+
Android
يمكنك العثور على المزيد من الفيديوهات في قناة YouTube.
الخطوات التالية
قم بتعميق معرفتك بالموضوعات التالية:
- الدروس التطبيقية حول الترميز: يمكنك التعرّف على كيفية استخدام Cloud Firestore في تطبيق فعلي عن طريق اتّباع الدرس التطبيقي حول الترميز الخاص بنظام التشغيل Android أو iOS أو الويب.
- نموذج البيانات: يمكنك الاطّلاع على مزيد من المعلومات حول كيفية تنظيم البيانات في Cloud Firestore، بما في ذلك البيانات الهرمية والمجموعات الفرعية.
- إضافة بيانات: تعرَّف على مزيد من المعلومات عن إنشاء البيانات وتعديلها في Cloud Firestore.
- الحصول على البيانات: تعرَّف على المزيد من المعلومات حول كيفية استرداد البيانات.
- إجراء طلبات بحث بسيطة ومركّبة: تعرَّف على كيفية إجراء طلبات البحث البسيطة والمركّبة.
- ترتيب طلبات البحث وتحديدها تعرَّف على كيفية ترتيب البيانات التي تعرضها طلبات البحث والحد من عرضها.