يوضح لك دليل البدء السريع هذا كيفية إعداد Cloud Firestore وإضافة البيانات ثم عرض البيانات التي أضفتها للتو في وحدة تحكُّم Firebase.
إنشاء قاعدة بيانات "Cloud Firestore"
أنشئ مشروع Firebase إذا لم يسبق لك ذلك: في وحدة تحكُّم Firebase، انقر على إضافة مشروع بعد ذلك، اتّبِع التعليمات الظاهرة على الشاشة لإنشاء مشروع على Firebase أو إضافة خدمات Firebase إلى مشروع Google Cloud Platform حالي
الانتقال إلى القسم Cloud Firestore في وحدة تحكُّم Firebase. سيُطلب منك اختيار مشروع حالي في Firebase. اتّبِع سير عمل إنشاء قاعدة البيانات.
اختَر وضع بدء لجهاز Cloud Firestore Security Rules:
- وضع الاختبار
جيدة لبدء استخدام مكتبات برامج الجوّال والويب، ولكنه يتيح لأي شخص قراءة بياناتك واستبدالها. بعد الاختبار، اجعل احرص على مراجعة قسم تأمين بياناتك.
لبدء استخدام الويب أو أنظمة Apple الأساسية أو حزمة تطوير البرامج (SDK) لنظام التشغيل Android، اختَر وضع الاختبار.
- وضع القفل
رفض جميع عمليات القراءة والكتابة من برامج الويب والأجهزة الجوّالة خوادم التطبيقات التي تمت مصادقتها (C# وGo وJava وNode.js وPHP) أو Python، أو Ruby) يمكنها الوصول إلى قاعدة البيانات لديك.
لبدء استخدام C# أو Go أو Java أو Node.js أو PHP أو Python أو Ruby بمكتبة برامج الخادم، حدد الوضع المُقفَل.
سيتم تطبيق المجموعة الأولية من Cloud Firestore Security Rules على إعداداتك التلقائية. قاعدة البيانات Cloud Firestore. إذا قمت بإنشاء قواعد بيانات متعددة لمشروعك، يمكنك نشر الدالة Cloud Firestore Security Rules لكل قاعدة بيانات.
اختَر موقعًا لقاعدة بياناتك.
إنّ إعداد الموقع الجغرافي هذا هو إعدادات مشروعك الموقع الجغرافي التلقائي لموارد Google Cloud Platform (GCP) تجدر الإشارة إلى أنّه سيتم استخدام هذا الموقع الجغرافي لخدمات GCP في مشروعك. التي تتطلب إعدادًا للموقع الجغرافي، وتحديدًا الموقع Cloud Storage بالإضافة إلى تطبيق App Engine (وهو مطلوبة في حال استخدام Cloud Scheduler).
إذا لم تتمكّن من اختيار موقع جغرافي، يعني ذلك أنّ مشروعك قد يحتوي على موقع جغرافي تلقائي لمورد Google Cloud Platform. تم تعيينه إما أثناء المشروع الإنشاء أو عند إعداد خدمة أخرى تتطلب موقعًا الإعداد.
انقر على تم.
عند تفعيل Cloud Firestore، يتم أيضًا تفعيل واجهة برمجة التطبيقات في مدير واجهة برمجة تطبيقات Cloud
إعداد بيئة التطوير
أضِف الموارد التابعة ومكتبات العملاء المطلوبة إلى تطبيقك.
Web
- اتّبِع التعليمات إضافة Firebase إلى تطبيق الويب
- أضِف مكتبات Firebase وCloud Firestore إلى تطبيقك:
تتوفر حزمة تطوير البرامج (SDK) Cloud Firestore أيضًا كحزمة npm.<script src="https://www.gstatic.com/firebasejs/10.13.1/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.13.1/firebase-firestore-compat.js"></script>
ستحتاج إلى طلب كلٍ من Firebase وCloud Firestore يدويًا.npm install firebase@10.13.1 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web
- اتّبِع التعليمات إضافة Firebase إلى تطبيق الويب
-
تتوفّر حزمة تطوير البرامج (SDK) Cloud Firestore كحزمة npm.
يجب استيراد كلٍّ من Firebase وCloud Firestore.npm install firebase@10.13.1 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
اتّبِع التعليمات إضافة Firebase إلى تطبيق Apple
يمكنك استخدام "مدير حزم Swift" لتثبيت اعتماديات Firebase وإدارتها.
- في Xcode، انتقِل إلى File (ملف) > بعد فتح مشروع التطبيق الخاص بك. حزم Swift > أضِف تبعية الحزمة.
- أضِف مستودع حزمة تطوير البرامج (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.2.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") }
من خلال استخدام BoM Android في Firebase، سيستخدم تطبيقك دائمًا الإصدارات المتوافقة من 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:25.1.0") }
هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ بدءًا من إصدار تشرين الأول (أكتوبر) 2023، يمكن أن يعتمد كل من مطوري Kotlin وJava على وحدة المكتبة الرئيسية (لمزيد من التفاصيل، راجع الأسئلة الشائعة حول هذه المبادرة).
Dart
- إذا لم تكن قد قمت بذلك من قبل، يمكنك تهيئة إعداد Firebase في تطبيق Flutter
- من جذر مشروع Flutter، شغِّل الأمر التالي:
تثبيت المكون الإضافي:
flutter pub add cloud_firestore
- بعد إكمال الخطوات، أعِد إنشاء تطبيق Flutter:
flutter run
- اختياري: تحسين 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.
جافا
- أضِف حزمة تطوير البرامج (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 من Firebase
-
بعد تفعيل تصغير البيانات، ما زال عدد الطرق المُشار إليها
يتجاوز الحد الأقصى المسموح به، فهناك خيار آخر وهو تفعيل
multidex
في:-
mainTemplate.gradle
في حال تفعيل نموذج Gradle المخصّص ضمن إعدادات المشغّل -
أو ملف
build.gradle
على مستوى الوحدة، في حال استخدام "استوديو Android" لإنشاء المشروع الذي تم تصديره.
-
عليك تصغير الإصدار لتجنُّب الرسالة Error while merging dex archives
.
Node.js
-
أضِف حزمة تطوير البرامج (SDK) لمشرف Firebase إلى تطبيقك:
npm install firebase-admin --save
- اتّبِع التعليمات التالية لإعداد Cloud Firestore مع بيانات الاعتماد المناسبة في بيئتك.
انتقال
- أضِف حزمة تطوير البرامج (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، والذي ستحتاج إلى استخدام مكتبة البرامج فيه.
-
إضافة مكتبة PHP في Cloud Firestore إلى تطبيقك:
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. وإلا، إعداد حساب خدمة
-
للمصادقة من بيئة التطوير، اضبط
-
إضافة مكتبة Ruby في Cloud Firestore إلى تطبيقك في
Gemfile
:gem "google-cloud-firestore"
-
ثبِّت الاعتماديات من
Gemfile
باستخدام:bundle install
(اختياري) إنشاء نموذج أولي واختباره باستخدام "Firebase Local Emulator Suite"
قبل الحديث عن الطريقة التي يعتمدها التطبيق في كتابة محتوى التطبيقات من Cloud Firestore، سنقدم لك مجموعة من الأدوات التي يمكنك استخدامها إنشاء نموذج أولي واختبار وظائف Cloud Firestore: Firebase Local Emulator Suite إذا كنت تجرب نماذج بيانات مختلفة، تحسين قواعد الأمان أو العمل على إيجاد الطريقة الأكثر فعالية من حيث التكلفة للتفاعل مع الواجهة الخلفية، والقدرة على العمل محليًا دون نشر والخدمات المباشرة فكرة رائعة.
ويُعد محاكي Cloud Firestore جزءًا من Local Emulator Suite، وهو للتطبيق التفاعل مع محتوى قاعدة البيانات التي تمّت محاكاتها وإعداداتها، بالإضافة إلى موارد المشروع التي تمت محاكاتها (الدوال وقواعد البيانات الأخرى وقواعد الأمان).
يتضمّن استخدام محاكي "Cloud Firestore" بضع خطوات فقط:
- إضافة سطر من الرمز إلى إعدادات اختبار تطبيقك للاتصال بالمحاكي.
- من جذر دليل المشروع المحلي، مع تشغيل
firebase emulators:start
. - إجراء الاتصالات من رمز النموذج الأولي لتطبيقك باستخدام النظام الأساسي Cloud Firestore SDK كالمعتاد.
تتوفّر جولة تفصيلية تشمل Cloud Firestore وCloud Functions. ومن المفترض أيضًا أن تُلقي نظرة على مقدمة Local Emulator Suite.
إعداد 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
للاحتفاظ بالبيانات عند انقطاع اتصال الجهاز بالإنترنت، يمكنك الاطّلاع على مستندات تفعيل البيانات بلا اتصال بالإنترنت.
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@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 للمشرف.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 للمشرف.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 للمشرف.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 للمشرف.-
الإعداد في Cloud Functions
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 للمشرف.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.
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
#C
#C
لمزيد من المعلومات عن تثبيت برنامج "Cloud Firestore" وإنشائه، يمكنك الاطّلاع على مكتبات عملاء Cloud Firestore.
لغة Ruby
إضافة بيانات
يخزن 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
// 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}'));
جافا
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
انتقال
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
. لاحظ أن هذا المستند
على زوج المفتاح/القيمة (الاسم الأوسط) الذي لا يظهر في الاسم الأول
جلسة المراجعة. يمكن أن تحتوي المستندات في المجموعة على مجموعات مختلفة من المعلومات.
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
// 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}'));
جافا
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
انتقال
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" لاسترداد المجموعة بأكملها.
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
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()}"); } });
جافا
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
انتقال
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) لمنصة الويب أو Android أو Apple، استخدِم Firebase المصادقة Cloud Firestore Security Rules لتأمين بياناتك 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.
الخطوات التالية
عزِّز معرفتك من خلال المواضيع التالية:
- الدروس التطبيقية حول الترميز: يمكنك التعرّف على كيفية استخدام Cloud Firestore في تطبيق فعلي من خلال اتّباع الدرس التطبيقي حول الترميز لنظام التشغيل Android أو iOS الويب:
- نموذج البيانات: مزيد من المعلومات عن طريقة معالجة البيانات في Cloud Firestore، بما في ذلك البيانات الهرمية والمجموعات الفرعية.
- إضافة البيانات: مزيد من المعلومات حول إنشاء البيانات وتعديلها في Cloud Firestore
- الحصول على البيانات: تعرَّف على مزيد من المعلومات حول كيفية استرداد البيانات. البيانات.
- تنفيذ طلبات بحث بسيطة ومركبة: يمكنك تعلُّم كيفية تنفيذ طلبات بحث بسيطة ومركبة.
- طلبات البحث عن الطلبات والحد الأقصى المسموح به التعرّف على كيفية تقديم الطلب وتقييد البيانات التي تعرضها استعلاماتك.