يوضح لك هذا Quickstart كيفية إعداد Cloud Firestore وإضافة البيانات ثم عرض البيانات التي أضفتها للتو في وحدة تحكم Firebase.
أنشئ قاعدة بيانات Cloud Firestore
إذا لم تكن قد قمت بذلك بالفعل ، فأنشئ مشروع Firebase: في وحدة تحكم Firebase ، انقر على إضافة مشروع ، ثم اتبع الإرشادات التي تظهر على الشاشة لإنشاء مشروع Firebase أو لإضافة خدمات Firebase إلى مشروع GCP حالي.
انتقل إلى قسم Cloud Firestore في وحدة تحكم Firebase . سيُطلب منك تحديد مشروع Firebase موجود. اتبع سير عمل إنشاء قاعدة البيانات.
حدد وضع بدء لقواعد أمان Cloud Firestore:
- وضع الاختبار
جيد لبدء استخدام مكتبات عميل الويب والجوال ، ولكنه يسمح لأي شخص بقراءة بياناتك والكتابة عليها. بعد الاختبار ، تأكد من مراجعة قسم تأمين بياناتك .
لبدء استخدام الويب أو أنظمة Apple الأساسية أو Android SDK ، حدد وضع الاختبار.
- وضع القفل
يرفض كل ما يقرأ ويكتب من عملاء المحمول والويب. لا يزال بإمكان خوادم التطبيقات المصادق عليها (C # أو Go أو Java أو Node.js أو PHP أو Python أو Ruby) الوصول إلى قاعدة البيانات الخاصة بك.
لبدء استخدام مكتبة عميل خادم C # أو Go أو Java أو Node.js أو PHP أو Python أو Ruby ، حدد الوضع المقفل.
حدد موقعا لقاعدة البيانات الخاصة بك.
يعد إعداد الموقع هذا هو موقع موارد Google Cloud Platform (GCP) الافتراضي لمشروعك. لاحظ أنه سيتم استخدام هذا الموقع لخدمات GCP في مشروعك التي تتطلب إعداد موقع ، وعلى وجه التحديد ، حاوية Cloud Storage الافتراضية وتطبيق App Engine (وهو أمر مطلوب إذا كنت تستخدم Cloud Scheduler).
إذا لم تكن قادرًا على تحديد موقع ، فإن مشروعك يحتوي بالفعل على موقع موارد GCP افتراضي. تم تعيينه إما أثناء إنشاء المشروع أو عند إعداد خدمة أخرى تتطلب إعداد الموقع.
انقر فوق تم .
عند تمكين Cloud Firestore ، فإنه يمكّن أيضًا واجهة برمجة التطبيقات في Cloud API Manager .
قم بإعداد بيئة التطوير الخاصة بك
أضف التبعيات ومكتبات العملاء المطلوبة إلى تطبيقك.
Web namespaced API
- اتبع التعليمات لإضافة Firebase إلى تطبيق الويب الخاص بك .
- أضف مكتبات Firebase و Cloud Firestore إلى تطبيقك:
<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-firestore-compat.js"></script>
يتوفر Cloud Firestore SDK أيضًا كحزمة npm.npm install firebase@9.22.1 --save
ستحتاج إلى طلب كل من Firebase و Cloud Firestore يدويًا.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web modular API
- اتبع التعليمات لإضافة Firebase إلى تطبيق الويب الخاص بك .
- يتوفر Cloud Firestore SDK كحزمة npm.
npm install firebase@9.22.1 --save
ستحتاج إلى استيراد كل من Firebase و Cloud Firestore.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS +
اتبع التعليمات لإضافة Firebase إلى تطبيق Apple الخاص بك .
استخدم Swift Package Manager لتثبيت وإدارة تبعيات Firebase.
- في Xcode ، مع فتح مشروع التطبيق الخاص بك ، انتقل إلى File> Swift Packages> Add Package Dependency .
- عند المطالبة ، أضف مستودع SDK لأنظمة Apple الأساسية لـ Firebase:
- اختر مكتبة Firestore.
- عند الانتهاء ، سيبدأ Xcode تلقائيًا في حل وتنزيل التبعيات الخاصة بك في الخلفية.
https://github.com/firebase/firebase-ios-sdk
Kotlin+KTX
- اتبع التعليمات لإضافة Firebase إلى تطبيق Android الخاص بك .
- باستخدام Firebase Android BoM ، أعلن عن تبعية مكتبة Cloud Firestore Android في ملف Gradle (على مستوى التطبيق) للوحدة النمطية (عادةً
app/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.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-ktx' }
باستخدام Firebase Android BoM ، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase Android.
(بديل) قم بتعريف تبعيات مكتبة Firebase بدون استخدام BoM
إذا اخترت عدم استخدام Firebase BoM ، فيجب عليك تحديد كل إصدار من إصدارات مكتبة Firebase في سطر التبعية الخاص بها.
لاحظ أنه إذا كنت تستخدم مكتبات Firebase متعددة في تطبيقك ، فإننا نوصي بشدة باستخدام BoM لإدارة إصدارات المكتبة ، مما يضمن توافق جميع الإصدارات.
dependencies { // Declare the dependency for the Cloud Firestore library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-firestore-ktx:24.6.1' }
Java
- اتبع التعليمات لإضافة Firebase إلى تطبيق Android الخاص بك .
- باستخدام Firebase Android BoM ، أعلن عن تبعية مكتبة Cloud Firestore Android في ملف Gradle (على مستوى التطبيق) للوحدة النمطية (عادةً
app/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.0') // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-firestore' }
باستخدام Firebase Android BoM ، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase Android.
(بديل) قم بتعريف تبعيات مكتبة Firebase بدون استخدام BoM
إذا اخترت عدم استخدام Firebase BoM ، فيجب عليك تحديد كل إصدار من إصدارات مكتبة Firebase في سطر التبعية الخاص بها.
لاحظ أنه إذا كنت تستخدم مكتبات Firebase متعددة في تطبيقك ، فإننا نوصي بشدة باستخدام BoM لإدارة إصدارات المكتبة ، مما يضمن توافق جميع الإصدارات.
dependencies { // Declare the dependency for the Cloud Firestore library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-firestore:24.6.1' }
Dart
- إذا لم تكن قد قمت بذلك بالفعل ، فقم بتهيئة وتهيئة Firebase في تطبيق Flutter.
- من جذر مشروع Flutter الخاص بك ، قم بتشغيل الأمر التالي لتثبيت المكون الإضافي:
flutter pub add cloud_firestore
- بمجرد الانتهاء ، أعد بناء تطبيق Flutter:
flutter run
- اختياري: قم بتحسين أوقات إنشاء iOS و macOS من خلال تضمين إطار العمل المجمع مسبقًا.
حاليًا ، تعتمد Firestore SDK لنظام iOS على الكود الذي يمكن أن يستغرق أكثر من 5 دقائق ليتم بناؤه في Xcode. لتقليل أوقات الإنشاء بشكل كبير ، يمكنك استخدام إصدار مترجم مسبقًا عن طريق إضافة هذا السطر إلى كتلة
target 'Runner' do
في Podfile الخاص بك:target 'Runner' do pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '8.15.0' # ... end
بالإضافة إلى ذلك ، تأكد من ترقية CocoaPods إلى 1.9.1 أو أعلى:
gem install cocoapods
لمزيد من المعلومات ، راجع المشكلة على GitHub .
جافا
- أضف Firebase Admin SDK إلى تطبيقك:
- باستخدام Gradle:
compile 'com.google.firebase:firebase-admin:1.32.0'
- باستخدام Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
- باستخدام Gradle:
- اتبع الإرشادات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
بايثون
- أضف Firebase Admin SDK إلى تطبيق 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 ++ الخاص بك .
وحدة
- اتبع التعليمات لإضافة Firebase إلى مشروع Unity الخاص بك .
- واجهة الوحدة لنظام Android.
- حدد ملف> إعدادات البناء
- بدّل "النظام الأساسي" إلى "Android" وانقر على "تبديل النظام الأساسي"
- انقر فوق "إعدادات المشغل ..."
- في واجهة مستخدم الوحدة الرئيسية ، ضمن "إعدادات Android" ، حدد "إعدادات النشر"
- ضمن قسم "تصغير" ، قم بتغيير إعدادات الإصدار وتصحيح الأخطاء من "بلا" إلى "ProGuard"
عند الإنشاء لنظام Android ، قم بتمكين ProGuarding لتجنب حد Android DEX. للقيام بذلك ، في محرر الوحدة:
Node.js
- أضف Firebase Admin SDK إلى تطبيقك:
npm install firebase-admin --save
- اتبع الإرشادات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
يذهب
- أضف Firebase Admin SDK إلى تطبيق Go:
go get firebase.google.com/go
- اتبع الإرشادات أدناه لتهيئة Cloud Firestore باستخدام بيانات الاعتماد المناسبة في بيئتك.
بي أتش بي
- تستخدم مكتبات عميل خادم 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
سي #
- تستخدم مكتبات عميل خادم 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;
روبي
- تستخدم مكتبات عميل خادم 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 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 ووظائف السحابة . يجب عليك أيضًا إلقاء نظرة على مقدمة Local Emulator Suite .
تهيئة Cloud Firestore
تهيئة مثيل Cloud Firestore:
Web modular API
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
استبدل FIREBASE_CONFIGURATION بـ firebaseConfig
لتطبيق الويب.
لاستمرار البيانات عندما يفقد الجهاز الاتصال ، راجع توثيق تمكين البيانات غير المتصلة .
Web namespaced API
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
استبدل FIREBASE_CONFIGURATION بـ firebaseConfig
لتطبيق الويب.
لاستمرار البيانات عندما يفقد الجهاز الاتصال ، راجع توثيق تمكين البيانات غير المتصلة .
سويفت
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;
جافا
تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin 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();
لاستخدام Firebase Admin SDK على خادمك الخاص ، استخدم حساب الخدمة .
انتقل إلى 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();
بايثون
تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin 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()
لاستخدام Firebase Admin SDK على خادمك الخاص ، استخدم حساب الخدمة .
انتقل إلى 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
تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin 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()
لاستخدام Firebase Admin SDK على خادمك الخاص ، استخدم حساب الخدمة .
انتقل إلى 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
تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin SDK .- التهيئة على وظائف السحابة
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
- التهيئة على Google Cloud
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
- التهيئة على الخادم الخاص بك
لاستخدام Firebase Admin SDK على الخادم الخاص بك (أو أي بيئة Node.js أخرى) ، استخدم حساب الخدمة . انتقل إلى IAM والمسؤول> حسابات الخدمة في وحدة تحكم Google Cloud. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. ثم استخدم الملف لتهيئة SDK:
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
يذهب
تتم تهيئة Cloud Firestore SDK بطرق مختلفة اعتمادًا على بيئتك. فيما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل ، راجع تهيئة Admin SDK .import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use the application default credentials ctx := context.Background() conf := &firebase.Config{ProjectID: projectID} app, err := firebase.NewApp(ctx, conf) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
لاستخدام Firebase Admin SDK على خادمك الخاص ، استخدم حساب الخدمة .
انتقل إلى IAM والمسؤول> حسابات الخدمة في وحدة تحكم Google Cloud. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. ثم استخدم الملف لتهيئة SDK:
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
بي أتش بي
بي أتش بي
لمزيد من المعلومات حول تثبيت عميل Cloud Firestore وإنشائه ، راجع مكتبات Cloud Firestore Client Libraries .
وحدة
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
سي #
سي #
لمزيد من المعلومات حول تثبيت عميل Cloud Firestore وإنشائه ، راجع مكتبات Cloud Firestore Client Libraries .
روبي
إضافة البيانات
يقوم Cloud Firestore بتخزين البيانات في المستندات ، والتي يتم تخزينها في المجموعات. ينشئ Cloud Firestore مجموعات ووثائق ضمنيًا في المرة الأولى التي تضيف فيها البيانات إلى المستند. لا تحتاج إلى إنشاء مجموعات أو مستندات بشكل صريح.
قم بإنشاء مجموعة جديدة ومستند باستخدام رمز المثال التالي.
Web modular API
import { collection, addDoc } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Ada", last: "Lovelace", born: 1815 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web namespaced API
db.collection("users").add({ first: "Ada", last: "Lovelace", born: 1815 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
سويفت
// Add a new document with a generated ID var ref: DocumentReference? = nil ref = db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
ج موضوعية
// 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
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
يذهب
بي أتش بي
بي أتش بي
لمزيد من المعلومات حول تثبيت عميل Cloud Firestore وإنشائه ، راجع مكتبات Cloud Firestore Client Libraries .
وحدة
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."); });
سي #
روبي
أضف الآن مستندًا آخر إلى مجموعة users
. لاحظ أن هذا المستند يتضمن زوجًا من قيم المفاتيح (الاسم الأوسط) لا يظهر في المستند الأول. يمكن أن تحتوي المستندات الموجودة في مجموعة على مجموعات مختلفة من المعلومات.
Web modular API
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web namespaced API
// Add a second document with a generated ID. db.collection("users").add({ first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
سويفت
// Add a second document with a generated ID. ref = db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
ج موضوعية
// 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
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
يذهب
بي أتش بي
بي أتش بي
لمزيد من المعلومات حول تثبيت عميل Cloud Firestore وإنشائه ، راجع مكتبات Cloud Firestore Client Libraries .
وحدة
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."); });
سي #
روبي
إقرأ البيانات
استخدم عارض البيانات في وحدة تحكم Firebase للتحقق بسرعة من أنك أضفت بيانات إلى Cloud Firestore.
يمكنك أيضًا استخدام طريقة "get" لاسترداد المجموعة بأكملها.
Web modular API
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
Web namespaced API
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
سويفت
db.collection("users").getDocuments() { (querySnapshot, err) in if let err = err { print("Error getting documents: \(err)") } else { for document in querySnapshot!.documents { print("\(document.documentID) => \(document.data())") } } }
ج موضوعية
[[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()}"); } });
جافا
بايثون
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
يذهب
بي أتش بي
بي أتش بي
لمزيد من المعلومات حول تثبيت عميل Cloud Firestore وإنشائه ، راجع مكتبات Cloud Firestore Client Libraries .
وحدة
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."); });
سي #
روبي
تأمين البيانات الخاصة بك
إذا كنت تستخدم SDK لأنظمة الويب أو Android أو Apple ، فاستخدم مصادقة Firebase وقواعد أمان Cloud Firestore لتأمين بياناتك في Cloud Firestore.
فيما يلي بعض مجموعات القواعد الأساسية التي يمكنك استخدامها للبدء. يمكنك تعديل قواعد الأمان الخاصة بك في علامة التبويب "القواعد" بوحدة التحكم.
المصادقة مطلوبة
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
وضع القفل
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
وضع الاختبار
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
قبل نشر تطبيق الويب أو Android أو iOS للإنتاج ، اتخذ أيضًا خطوات للتأكد من أن عملاء التطبيق فقط يمكنهم الوصول إلى بيانات Cloud Firestore الخاصة بك. انظر وثائق التحقق من التطبيق .
إذا كنت تستخدم أحد حزم SDK للخادم ، فاستخدم إدارة الهوية والوصول (IAM) لتأمين بياناتك في Cloud Firestore.
شاهد فيديو تعليمي
للحصول على إرشادات مفصلة حول بدء استخدام مكتبات عملاء الأجهزة المحمولة في Cloud Firestore ، شاهد أحد مقاطع الفيديو التعليمية التالية:
الويب
iOS +
ذكري المظهر
يمكنك العثور على المزيد من مقاطع الفيديو في قناة Firebase على YouTube .
الخطوات التالية
تعميق معرفتك بالمواضيع التالية:
- Codelabs - تعلم كيفية استخدام Cloud Firestore في تطبيق حقيقي باتباع مختبر الرموز لنظام Android أو iOS أو الويب .
- نموذج البيانات - تعرف على المزيد حول كيفية تنظيم البيانات في Cloud Firestore ، بما في ذلك البيانات الهرمية والمجموعات الفرعية.
- إضافة البيانات - تعرف على المزيد حول إنشاء البيانات وتحديثها في Cloud Firestore.
- الحصول على البيانات - تعرف على المزيد حول كيفية استرداد البيانات.
- تنفيذ استعلامات بسيطة ومركبة - تعرف على كيفية تشغيل استعلامات بسيطة ومركبة.
- طلب الاستعلامات وتحديدها تعرف على كيفية طلب البيانات التي يتم إرجاعها من خلال استفساراتك والحد منها.