این راهنمای سریع به شما نشان میدهد که چگونه Cloud Firestore راهاندازی کنید، دادهها را اضافه کنید، سپس دادههایی را که تازه در کنسول Firebase اضافه کردهاید مشاهده کنید.
ایجاد یک پایگاه داده Cloud Firestore
اگر قبلاً این کار را نکردهاید، یک پروژه Firebase ایجاد کنید: در کنسول Firebase ، روی افزودن پروژه کلیک کنید، سپس دستورالعملهای روی صفحه را برای ایجاد یک پروژه Firebase یا افزودن سرویسهای Firebase به یک پروژه Google Cloud موجود دنبال کنید.
پروژه خود را در کنسول Firebase باز کنید. در پنل سمت چپ، Build را باز کرده و سپس Firestore database را انتخاب کنید.
روی ایجاد پایگاه داده کلیک کنید.
مکانی را برای پایگاه داده خود انتخاب کنید.
اگر نمیتوانید مکانی را انتخاب کنید، پس «مکان منابع پیشفرض Google Cloud » پروژه شما از قبل تنظیم شده است. برخی از منابع پروژه شما (مانند نمونه پیشفرض Cloud Firestore ) وابستگی مکانی مشترکی دارند و مکان آنها را میتوان در حین ایجاد پروژه یا هنگام راهاندازی سرویس دیگری که این وابستگی مکانی را به اشتراک میگذارد، تنظیم کرد.
یک حالت شروع برای Cloud Firestore Security Rules خود انتخاب کنید:
- حالت تست
برای شروع کار با کتابخانههای کلاینت موبایل و وب خوب است، اما به هر کسی اجازه میدهد دادههای شما را بخواند و بازنویسی کند. پس از آزمایش، حتماً بخش «دادههای خود را ایمن کنید» را مرور کنید.
برای شروع کار با وب، پلتفرمهای اپل یا اندروید SDK، حالت تست را انتخاب کنید.
- حالت تولید
تمام خواندنها و نوشتنها را از کلاینتهای موبایل و وب رد میکند. سرورهای برنامهی احراز هویت شدهی شما (C#، Go، Java، Node.js، PHP، Python یا Ruby) همچنان میتوانند به پایگاه دادهی شما دسترسی داشته باشند.
برای شروع کار با کتابخانه کلاینت سرور C#، Go، Java، Node.js، PHP، Python یا Ruby، حالت تولید (production mode) را انتخاب کنید.
مجموعه اولیه Cloud Firestore Security Rules شما بر روی پایگاه داده پیشفرض Cloud Firestore شما اعمال خواهد شد. اگر چندین پایگاه داده برای پروژه خود ایجاد کنید، میتوانید Cloud Firestore Security Rules برای هر پایگاه داده اعمال کنید.
روی ایجاد کلیک کنید.
وقتی Cloud Firestore فعال میکنید، API را نیز در Cloud API Manager فعال میکند.
محیط توسعه خود را تنظیم کنید
وابستگیها و کتابخانههای کلاینت مورد نیاز را به برنامه خود اضافه کنید.
Web
- برای افزودن Firebase به برنامه وب خود، دستورالعملها را دنبال کنید.
- SDK Cloud Firestore به صورت یک بسته npm در دسترس است.
شما باید هم Firebase و هم Cloud Firestore را وارد کنید.npm install firebase@12.4.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- برای افزودن Firebase به برنامه وب خود، دستورالعملها را دنبال کنید.
- کتابخانههای Firebase و Cloud Firestore را به برنامه خود اضافه کنید:
SDK Cloud Firestore به صورت یک بسته npm نیز موجود است.<script src="https://www.gstatic.com/firebasejs/12.4.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/12.4.0/firebase-firestore-compat.js"></script>
شما باید به صورت دستی Firebase و Cloud Firestore را به هر دو مورد نیاز (Require) دهید.npm install firebase@12.4.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
آیاواس+
برای افزودن Firebase به برنامه اپل خود، دستورالعملها را دنبال کنید.
برای نصب و مدیریت وابستگیهای Firebase از Swift Package Manager استفاده کنید.
- در Xcode، با باز کردن پروژه برنامه خود، به File > Swift Packages > Add Package Dependency بروید.
- وقتی از شما خواسته شد، مخزن SDK پلتفرمهای اپل فایربیس را اضافه کنید:
- کتابخانه Firestore را انتخاب کنید.
- پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگیهای شما در پسزمینه میکند.
https://github.com/firebase/firebase-ios-sdk
اندروید
- برای افزودن Firebase به برنامه اندروید خود، دستورالعملها را دنبال کنید.
- با استفاده از Firebase Android BoM ، وابستگی کتابخانه Cloud Firestore برای اندروید را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً
app/build.gradle.ktsیاapp/build.gradle) تعریف کنید.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.4.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 استفاده خواهد کرد.
(جایگزین) اعلان وابستگیهای کتابخانه فایربیس بدون استفاده از 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:26.0.2") }
به دنبال یک ماژول کتابخانه مخصوص کاتلین هستید؟ از نسخه اکتبر ۲۰۲۳ ، توسعهدهندگان کاتلین و جاوا میتوانند به ماژول کتابخانه اصلی متکی باشند (برای جزئیات بیشتر، به سوالات متداول در مورد این ابتکار عمل مراجعه کنید).
Dart
- اگر قبلاً این کار را نکردهاید، Firebase را در برنامه Flutter خود پیکربندی و مقداردهی اولیه کنید .
- از ریشه پروژه Flutter خود، دستور زیر را برای نصب افزونه اجرا کنید:
flutter pub add cloud_firestore
- پس از اتمام، برنامه Flutter خود را بازسازی کنید:
flutter run
- اختیاری: با اضافه کردن چارچوب از پیش کامپایل شده، زمان ساخت iOS و macOS را بهبود بخشید.
در حال حاضر، کیت توسعه نرمافزار Firestore برای iOS به کدی وابسته است که ساخت آن در 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 endIOS_SDK_VERSION با نسخه SDK iOS فایربیس مشخص شده در فایل
firebase_sdk_version.rbمربوط بهfirebase_coreجایگزین کنید. اگر از آخرین نسخهfirebase_coreاستفاده نمیکنید، این فایل را در حافظه پنهان بسته Pub محلی خود (معمولاً~/.pub-cache) جستجو کنید.علاوه بر این، مطمئن شوید که CocoaPods را به نسخه ۱.۹.۱ یا بالاتر ارتقا دادهاید:
gem install cocoapods
برای اطلاعات بیشتر به موضوع در GitHub مراجعه کنید.
جاوا
- کیت توسعه نرمافزار (SDK) مدیریت فایربیس را به برنامه خود اضافه کنید:
- استفاده از گریدل:
implementation 'com.google.firebase:firebase-admin:9.7.0'
- استفاده از ماون:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.7.0</version> </dependency>
- استفاده از گریدل:
- برای راهاندازی اولیه Cloud Firestore با اعتبارنامههای مناسب در محیط خود، دستورالعملهای زیر را دنبال کنید.
پایتون
- کیت توسعه نرمافزار مدیریت فایربیس (Firebase Admin SDK) را به برنامه پایتون خود اضافه کنید:
pip install --upgrade firebase-admin
- برای راهاندازی اولیه Cloud Firestore با اعتبارنامههای مناسب در محیط خود، دستورالعملهای زیر را دنبال کنید.
سی++
- برای اضافه کردن Firebase به پروژه ++C خود، دستورالعملها را دنبال کنید.
- رابط کاربری سی پلاس پلاس برای اندروید
- وابستگیهای 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 خود، دستورالعملها را دنبال کنید.
- از رابط کاربری Unity برای پیکربندی پروژه خود جهت فشردهسازی فایلهای اندروید استفاده کنید.
- این گزینه را میتوانید در تنظیمات پخشکننده > اندروید > تنظیمات انتشار > کوچکسازی (Minify) پیدا کنید.
- این گزینهها ممکن است در نسخههای مختلف یونیتی متفاوت باشند، بنابراین به مستندات رسمی یونیتی و راهنمای اشکالزدایی ساخت فایربیس یونیتی مراجعه کنید.
- اگر پس از فعال کردن minification، تعداد متدهای ارجاع شده هنوز از حد مجاز بیشتر باشد، گزینه دیگر فعال کردن
multidexدر موارد زیر است:-
mainTemplate.gradleاگر Custom Gradle Template در تنظیمات Player فعال باشد. - یا، فایل
build.gradleدر سطح ماژول، اگر از اندروید استودیو برای ساخت پروژه اکسپورت شده استفاده میکنید.
-
برای جلوگیری از نمایش پیام Error while merging dex archives ، باید نسخهٔ ساختهشده را کوچکسازی کنید.
نود جی اس
- کیت توسعه نرمافزار (SDK) مدیریت فایربیس را به برنامه خود اضافه کنید:
npm install firebase-admin --save
- برای راهاندازی اولیه Cloud Firestore با اعتبارنامههای مناسب در محیط خود، دستورالعملهای زیر را دنبال کنید.
برو
- کیت توسعه نرمافزار (SDK) مدیریت فایربیس را به برنامه Go خود اضافه کنید:
go get firebase.google.com/go
- برای راهاندازی اولیه Cloud Firestore با اعتبارنامههای مناسب در محیط خود، دستورالعملهای زیر را دنبال کنید.
پی اچ پی
- کتابخانههای کلاینت سرور Cloud Firestore (جاوا، Node.js، پایتون، Go، PHP، C# و Ruby) از اعتبارنامههای پیشفرض برنامه گوگل برای احراز هویت استفاده میکنند.
- برای احراز هویت از محیط توسعه خود، متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALSرا طوری تنظیم کنید که به یک فایل کلید حساب سرویس JSON اشاره کند. میتوانید یک فایل کلید در صفحه اعتبارنامههای کنسول API ایجاد کنید.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
سی شارپ
- کتابخانههای کلاینت سرور Cloud Firestore (جاوا، Node.js، پایتون، Go، PHP، C# و Ruby) از اعتبارنامههای پیشفرض برنامه گوگل برای احراز هویت استفاده میکنند.
- برای احراز هویت از محیط توسعه خود، متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALSرا طوری تنظیم کنید که به یک فایل کلید حساب سرویس JSON اشاره کند. میتوانید یک فایل کلید در صفحه اعتبارنامههای کنسول API ایجاد کنید.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;
روبی
- کتابخانههای کلاینت سرور Cloud Firestore (جاوا، Node.js، پایتون، Go، PHP، C# و Ruby) از اعتبارنامههای پیشفرض برنامه گوگل برای احراز هویت استفاده میکنند.
- برای احراز هویت از محیط توسعه خود، متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALSرا طوری تنظیم کنید که به یک فایل کلید حساب سرویس JSON اشاره کند. میتوانید یک فایل کلید در صفحه اعتبارنامههای کنسول API ایجاد کنید.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 . اگر در حال امتحان کردن مدلهای داده مختلف، بهینهسازی قوانین امنیتی خود یا تلاش برای یافتن مقرونبهصرفهترین راه برای تعامل با back-end هستید، امکان کار محلی بدون استقرار سرویسهای زنده میتواند ایده بسیار خوبی باشد.
شبیهساز 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 برنامه وب خود جایگزین کنید.
برای حفظ دادهها هنگام قطع اتصال دستگاه، به مستندات فعالسازی دادههای آفلاین مراجعه کنید.
سویفت
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
// Access a Cloud Firestore instance from your Activityval db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your ActivityFirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
جاوا
بسته به محیط شما، SDK مربوط Cloud Firestore به روشهای مختلفی مقداردهی اولیه میشود. در زیر رایجترین روشها آمده است. برای مرجع کامل، به Initialize the 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 روی سرور خودتان، از یک حساب کاربری سرویس استفاده کنید.
در کنسول Google Cloud به مسیر IAM & admin > Service accounts بروید. یک کلید خصوصی جدید ایجاد کنید و فایل 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();
پایتون
بسته به محیط شما، SDK مربوط Cloud Firestore به روشهای مختلفی مقداردهی اولیه میشود. در زیر رایجترین روشها آمده است. برای مرجع کامل، به Initialize the 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 روی سرور خودتان، از یک حساب کاربری سرویس استفاده کنید.
در کنسول Google Cloud به مسیر IAM & admin > Service accounts بروید. یک کلید خصوصی جدید ایجاد کنید و فایل 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 به روشهای مختلفی مقداردهی اولیه میشود. در زیر رایجترین روشها آمده است. برای مرجع کامل، به Initialize the 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 روی سرور خودتان، از یک حساب کاربری سرویس استفاده کنید.
در کنسول Google Cloud به مسیر IAM & admin > Service accounts بروید. یک کلید خصوصی جدید ایجاد کنید و فایل 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()
سی++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
نود جی اس
بسته به محیط شما، SDK مربوط Cloud Firestore به روشهای مختلفی مقداردهی اولیه میشود. در زیر رایجترین روشها آمده است. برای مرجع کامل، به Initialize the Admin 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 به مسیر IAM & admin > Service accounts بروید. یک کلید خصوصی جدید ایجاد کنید و فایل 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 به روشهای مختلفی مقداردهی اولیه میشود. در زیر رایجترین روشها آمده است. برای مرجع کامل، به Initialize the 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 روی سرور خودتان، از یک حساب کاربری سرویس استفاده کنید.
در کنسول Google Cloud به مسیر IAM & admin > Service accounts بروید. یک کلید خصوصی جدید ایجاد کنید و فایل 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 مراجعه کنید.
وحدت
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
سی شارپ
سی شارپ
برای اطلاعات بیشتر در مورد نصب و ایجاد یک کلاینت Cloud Firestore ، به کتابخانههای کلاینت Cloud Firestore مراجعه کنید.
روبی
اضافه کردن داده
Cloud Firestore دادهها را در اسناد (Documents) ذخیره میکند که خود در مجموعهها (Collections) ذخیره میشوند. 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); });
سویفت
// 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)") }
هدف-سی
// 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
// 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
سی++
// 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; } });
نود جی اس
برو
پی اچ پی
پی اچ پی
برای اطلاعات بیشتر در مورد نصب و ایجاد یک کلاینت Cloud Firestore ، به کتابخانههای کلاینت Cloud Firestore مراجعه کنید.
وحدت
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
// 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); });
سویفت
// 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)") }
هدف-سی
// 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
// 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
سی++
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; } });
نود جی اس
برو
پی اچ پی
پی اچ پی
برای اطلاعات بیشتر در مورد نصب و ایجاد یک کلاینت Cloud Firestore ، به کتابخانههای کلاینت Cloud Firestore مراجعه کنید.
وحدت
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."); });
سی شارپ
روبی
خواندن دادهها
برای تأیید سریع اینکه دادهها را به Cloud Firestore اضافه کردهاید، از نمایشگر داده در کنسول Firebase استفاده کنید.
همچنین میتوانید از متد "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()}`); }); });
سویفت
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)") }
هدف-سی
[[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
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
سی++
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; } });
نود جی اس
برو
پی اچ پی
پی اچ پی
برای اطلاعات بیشتر در مورد نصب و ایجاد یک کلاینت Cloud Firestore ، به کتابخانههای کلاینت Cloud Firestore مراجعه کنید.
وحدت
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 پلتفرمهای وب، اندروید یا اپل استفاده میکنید، از 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;
}
}
}
قبل از اینکه برنامه وب، اندروید یا iOS خود را در محیط عملیاتی مستقر کنید، همچنین اقداماتی را انجام دهید تا مطمئن شوید که فقط کلاینتهای برنامه شما میتوانند به دادههای Cloud Firestore شما دسترسی داشته باشند. به مستندات App Check مراجعه کنید.
اگر از یکی از SDK های سرور استفاده میکنید، از مدیریت هویت و دسترسی (IAM) برای ایمنسازی دادههای خود در Cloud Firestore استفاده کنید.
یک آموزش ویدیویی تماشا کنید
برای راهنمایی دقیق در مورد شروع کار با کتابخانههای کلاینت موبایل Cloud Firestore ، یکی از آموزشهای ویدیویی زیر را تماشا کنید:
وب
آیاواس+
اندروید
میتوانید ویدیوهای بیشتر را در کانال یوتیوب فایربیس پیدا کنید.
مراحل بعدی
با مباحث زیر دانش خود را عمیقتر کنید:
- Codelabs - با دنبال کردن codelab برای اندروید ، iOS یا وب ، یاد بگیرید که از Cloud Firestore در یک برنامه واقعی استفاده کنید.
- مدل داده - درباره نحوه ساختار دادهها در Cloud Firestore ، از جمله دادههای سلسله مراتبی و زیرمجموعهها، بیشتر بدانید.
- افزودن داده — درباره ایجاد و بهروزرسانی دادهها در Cloud Firestore بیشتر بدانید.
- دریافت دادهها — درباره نحوه بازیابی دادهها بیشتر بدانید.
- اجرای پرسوجوهای ساده و مرکب — یاد بگیرید که چگونه پرسوجوهای ساده و مرکب را اجرا کنید.
- مرتبسازی و محدود کردن پرسوجوها یاد بگیرید که چگونه دادههای برگردانده شده توسط پرسوجوهای خود را مرتب و محدود کنید.