يوضّح لك دليل البدء السريع هذا كيفية إعداد Cloud Firestore وإضافة بيانات ثم عرض البيانات التي أضفتها للتو في وحدة تحكّم Firebase.
إنشاء قاعدة بيانات Cloud Firestore
أنشئ مشروعًا على Firebase إذا لم يسبق لك ذلك: في وحدة تحكّم Firebase، انقر على إضافة مشروع، ثم اتّبِع التعليمات الظاهرة على الشاشة لإنشاء مشروع على Firebase أو لإضافة خدمات Firebase إلى مشروع Google Cloud حالي.
افتح مشروعك في وحدة تحكّم Firebase. في اللوحة اليمنى، وسِّعالإنشاء، ثم اختَرقاعدة بيانات Firestore.
انقر على إنشاء قاعدة بيانات.
اختَر موقعًا لقاعدة بياناتك.
إذا لم تتمكّن من اختيار موقع جغرافي، يعني ذلك أنّه سبق أن تم ضبط "الموقع الجغرافي لموارد Google Cloud التلقائية" في مشروعك. تشترك بعض موارد مشروعك (مثل مثيل Cloud Firestore التلقائي) في موقع جغرافي شائع، ويمكن تحديد موقعها الجغرافي إما أثناء إنشاء المشروع أو عند إعداد خدمة أخرى تشترك في هذا الموقع الجغرافي.
اختَر وضع بدء 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 لكل قاعدة بيانات.
انقر على إنشاء.
عند تفعيل Cloud Firestore، يتم أيضًا تفعيل واجهة برمجة التطبيقات في Cloud API Manager.
إعداد بيئة التطوير
أضِف إلى تطبيقك التبعيات المطلوبة ومكتبات البرامج.
Web
- اتّبِع التعليمات ل إضافة Firebase إلى تطبيق الويب.
- أضِف مكتبتَي Firebase وCloud Firestore إلى تطبيقك:
<script src="https://www.gstatic.com/firebasejs/11.0.2/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/11.0.2/firebase-firestore-compat.js"></script>
تتوفّر حزمة تطوير البرامج (SDK) لنظام التشغيل Cloud Firestore أيضًا كحزمة npm.npm install firebase@11.0.2 --save
عليك طلب Firebase وCloud Firestore يدويًا.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web
- اتّبِع التعليمات ل إضافة Firebase إلى تطبيق الويب.
-
تتوفّر حزمة تطوير البرامج (SDK) لنظام التشغيل Cloud Firestore كحزمة npm.
npm install firebase@11.0.2 --save
عليك استيراد كلّ من Firebase وCloud Firestore.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
اتّبِع التعليمات لإضافة Firebase إلى تطبيقك على Apple.
استخدِم أداة Swift Package Manager لتثبيت تبعيات Firebase وإدارتها.
- في Xcode، مع فتح مشروع تطبيقك، انتقِل إلى ملف > حِزم Swift > إضافة تبعية حزمة.
- أضِف مستودع حزمة تطوير البرامج (SDK) لمنصّات Apple من Firebase عندما يُطلب منك ذلك:
- اختَر مكتبة Firestore.
- عند الانتهاء، سيبدأ Xcode تلقائيًا في حلّ ملفاتك المضمّنة وتنزيلها في الخلفية.
https://github.com/firebase/firebase-ios-sdk
Android
- اتّبِع التعليمات ل إضافة Firebase إلى تطبيق Android.
- باستخدام
Firebase Android BoM،
حدِّد الاعتمادية لمكتبة Cloud Firestore لنظام التشغيل Android في
ملف Gradle للوحدة (على مستوى التطبيق)
(عادةً
app/build.gradle.kts
أوapp/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore") }
باستخدام حِزم Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في Firebase.
(بديل) يمكنك تحديد تبعيات مكتبة 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.1") }
هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ اعتبارًا من إصدار تشرين الأول (أكتوبر) 2023، يمكن لمطوّري Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (للاطّلاع على التفاصيل، يُرجى الاطّلاع على الأسئلة الشائعة حول هذه المبادرة).
Dart
- اضبط إعدادات Firebase وأدخِل قيم إعداداتها في تطبيقك المكتوب بلغة Flutter إذا لم يسبق لك إجراء ذلك.
- من جذر مشروع Flutter، شغِّل الأمر التالي ل
تثبيت المكوّن الإضافي:
flutter pub add cloud_firestore
- بعد اكتمال العملية، أعِد إنشاء تطبيق Flutter:
flutter run
- اختياري: يمكنك تحسين أوقات إنشاء التطبيقات على نظامَي التشغيل iOS وmacOS من خلال تضمين
إطار العمل المجمَّع مسبقًا.
تعتمد حزمة تطوير البرامج (SDK) لنظام التشغيل iOS من Firestore حاليًا على رمز يمكن أن يستغرق مدة تزيد عن 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 بإصدار حزمة تطوير البرامج (SDK) لنظام التشغيل iOS في Firebase المحدّد في ملف
firebase_sdk_version.rb
فيfirebase_core
. إذا لم تكن تستخدم أحدث إصدار من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 Unity Build.
-
إذا استمر عدد الطرق المُشار إليها في تجاوز الحدّ الأقصى بعد تفعيل التصغير، يمكنك تفعيل
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، وهي المكتبة التي ستحتاج إليها لاستخدام مكتبة العميل.
-
أضِف مكتبة 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. بخلاف ذلك، إعداد حساب خدمة
-
للمصادقة من بيئة التطوير، اضبط متغيّر البيئة
-
أضِف مكتبة C# لـ Cloud Firestore إلى تطبيقك في ملف
.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
. - إجراء مكالمات من رمز النموذج الأولي لتطبيقك باستخدام حزمة تطوير البرامج (SDK) لنظام أساسيCloud Firestore كالمعتاد
تتوفّر جولة تفصيلية حول 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 على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في 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
يتمّ إعداد حزمة 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 على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في 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
يتمّ إعداد حزمة 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 على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في 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
يتمّ إعداد حزمة 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 على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في 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 تُنشئ المجموعات والمستندات بشكل ضمني في المرة الأولى التي تضيف فيها بيانات إلى المستند. لست بحاجة إلى إنشاء مجموعات أو مستندات بشكل صريح.
أنشئ مجموعة ومستندًا جديدَين باستخدام مثال التعليمات البرمجية التالي.
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
قراءة البيانات
استخدِم أداة Cloud Firestore عرض البيانات في وحدة تحكُّم 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 Authentication و 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 للخادم، استخدِم إدارة الهوية والوصول (IAM) لتأمين بياناتك في Cloud Firestore.
مشاهدة فيديو تعليمي
للحصول على إرشادات مفصّلة حول بدء استخدام Cloud Firestore مكتبات تطبيقات الأجهزة الجوّالة، يمكنك مشاهدة أحد الفيديوهات التعليمية التالية:
الويب
iOS+
Android
يمكنك العثور على المزيد من الفيديوهات في قناة Firebase على YouTube.
الخطوات التالية
يمكنك التعمّق في معرفة المواضيع التالية:
- Codelabs: يمكنك التعرّف على كيفية استخدام Cloud Firestore في تطبيق حقيقي من خلال متابعة ورشة Codelab لنظام التشغيل Android أو iOS أو الويب.
- نموذج البيانات: اطّلِع على مزيد من المعلومات عن كيفية تنظيم البيانات في Cloud Firestore، بما في ذلك البيانات التسلسلية والمجموعات الفرعية.
- إضافة بيانات: اطّلِع على مزيد من المعلومات عن إنشاء البيانات وتعديلها في Cloud Firestore.
- الحصول على البيانات: اطّلِع على مزيد من المعلومات عن كيفية استرجاع البيانات.
- تنفيذ طلبات بحث بسيطة ومركّبة: تعرَّف على كيفية تنفيذ طلبات بحث بسيطة ومركّبة.
- ترتيب الاستعلامات والحدّ منها تعرَّف على كيفية ترتيب والحدّ من البيانات التي تعرضها استعلاماتك.