این شروع سریع به شما نشان می دهد که چگونه Cloud Firestore راه اندازی کنید، داده ها را اضافه کنید، سپس داده هایی را که به تازگی در کنسول Firebase اضافه کرده اید مشاهده کنید.
یک پایگاه داده Cloud Firestore ایجاد کنید
اگر قبلاً این کار را نکردهاید، یک پروژه Firebase ایجاد کنید: در کنسول Firebase ، روی افزودن پروژه کلیک کنید، سپس دستورالعملهای روی صفحه را دنبال کنید تا یک پروژه Firebase ایجاد کنید یا خدمات Firebase را به یک پروژه GCP موجود اضافه کنید.
به بخش Cloud Firestore کنسول Firebase بروید. از شما خواسته می شود که یک پروژه Firebase موجود را انتخاب کنید. گردش کار ایجاد پایگاه داده را دنبال کنید.
یک حالت شروع برای Cloud Firestore Security Rules خود انتخاب کنید:
- حالت تست
برای شروع کار با کتابخانه های موبایل و کلاینت وب خوب است، اما به هر کسی اجازه می دهد داده های شما را بخواند و بازنویسی کند. پس از تست، حتما بخش Secure your data را مرور کنید.
برای شروع کار با وب، پلتفرمهای اپل یا Android SDK، حالت تست را انتخاب کنید.
- حالت قفل شده
همه خواندن و نوشتن از مشتریان تلفن همراه و وب را رد می کند. سرورهای برنامه تأیید شده شما (C#، Go، Java، Node.js، PHP، Python یا Ruby) همچنان می توانند به پایگاه داده شما دسترسی داشته باشند.
برای شروع کار با C#، Go، Java، Node.js، PHP، Python یا کتابخانه سرویس گیرنده سرور Ruby، حالت قفل را انتخاب کنید.
مجموعه اولیه Cloud Firestore Security Rules شما در پایگاه داده پیشفرض Cloud Firestore اعمال میشود. اگر چندین پایگاه داده برای پروژه خود ایجاد می کنید، می توانید Cloud Firestore Security Rules برای هر پایگاه داده استقرار دهید.
مکانی را برای پایگاه داده خود انتخاب کنید.
این تنظیم مکان، مکان منبع پیشفرض Google Cloud Platform (GCP) پروژه شما است. توجه داشته باشید که این مکان برای سرویسهای GCP در پروژه شما استفاده میشود که به تنظیمات مکان نیاز دارند، بهویژه سطل Cloud Storage پیشفرض و برنامه App Engine شما (که در صورت استفاده از Cloud Scheduler لازم است).
اگر نمیتوانید مکانی را انتخاب کنید، پروژه شما از قبل دارای یک مکان منبع GCP پیشفرض است. در حین ایجاد پروژه یا هنگام راهاندازی سرویس دیگری که نیاز به تنظیم مکان دارد تنظیم شده است.
روی Done کلیک کنید.
هنگامی که Cloud Firestore فعال می کنید، API را در Cloud API Manager نیز فعال می کند.
محیط توسعه خود را تنظیم کنید
وابستگی ها و کتابخانه های مشتری مورد نیاز را به برنامه خود اضافه کنید.
Web
- دستورالعمل ها را برای افزودن Firebase به برنامه وب خود دنبال کنید.
- کتابخانه های Firebase و Cloud Firestore را به برنامه خود اضافه کنید:
<script src="https://www.gstatic.com/firebasejs/10.13.2/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.13.2/firebase-firestore-compat.js"></script>
Cloud Firestore SDK نیز به صورت بسته npm در دسترس است.npm install firebase@10.13.2 --save
باید به صورت دستی به Firebase و Cloud Firestore نیاز داشته باشید.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web
- دستورالعمل ها را برای افزودن Firebase به برنامه وب خود دنبال کنید.
- Cloud Firestore SDK به صورت بسته npm در دسترس است.
npm install firebase@10.13.2 --save
باید هم Firebase و هم Cloud Firestore وارد کنید.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
دستورالعمل ها را برای افزودن Firebase به برنامه Apple خود دنبال کنید.
برای نصب و مدیریت وابستگی های Firebase از Swift Package Manager استفاده کنید.
- در Xcode، با باز بودن پروژه برنامه، به File > Swift Packages > Add Package Dependency بروید.
- هنگامی که از شما خواسته شد، مخزن SDK پلتفرم های Apple Firebase را اضافه کنید:
- کتابخانه Firestore را انتخاب کنید.
- پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی های شما در پس زمینه می کند.
https://github.com/firebase/firebase-ios-sdk
اندروید
- دستورالعمل ها را برای افزودن 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.3.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:25.1.0") }
به دنبال یک ماژول کتابخانه خاص کاتلین هستید؟ با شروع انتشار اکتبر 2023 ، توسعه دهندگان Kotlin و Java می توانند به ماژول کتابخانه اصلی وابسته باشند (برای جزئیات، به سؤالات متداول در مورد این ابتکار مراجعه کنید).
Dart
- اگر قبلاً این کار را نکردهاید، Firebase را در برنامه Flutter خود پیکربندی و مقداردهی اولیه کنید .
- از ریشه پروژه Flutter خود، دستور زیر را برای نصب افزونه اجرا کنید:
flutter pub add cloud_firestore
- پس از تکمیل، برنامه Flutter خود را بازسازی کنید:
flutter run
- اختیاری: با اضافه کردن چارچوب از پیش کامپایل شده، زمان ساخت iOS و macOS را بهبود بخشید.
در حال حاضر، Firestore SDK برای iOS به کدهایی بستگی دارد که ساخت آن در Xcode ممکن است بیش از 5 دقیقه طول بکشد. برای کاهش قابل توجه زمان ساخت، میتوانید با افزودن این خط به بلوک
target 'Runner' do
در پادفایل خود از یک نسخه از پیش کامپایل شده استفاده کنید:target 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => 'IOS_SDK_VERSION' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do inherit! :search_paths end end
IOS_SDK_VERSION با نسخه Firebase iOS SDK مشخص شده در فایل
firebase_sdk_version.rb
درfirebase_core
جایگزین کنید. اگر از آخرین نسخهfirebase_core
استفاده نمیکنید، این فایل را در حافظه پنهان بسته Pub محلی خود (معمولاً~/.pub-cache
) جستجو کنید.علاوه بر این، مطمئن شوید که 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 را به برنامه پایتون خود اضافه کنید:
pip install --upgrade firebase-admin
- دستورالعمل های زیر را دنبال کنید تا Cloud Firestore با اعتبار مناسب در محیط خود راه اندازی کنید.
C++
- دستورالعمل ها را برای افزودن Firebase به پروژه C++ خود دنبال کنید.
- رابط 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 برای پیکربندی پروژه خود برای کوچک کردن بیلدهای اندروید استفاده کنید.
- این گزینه را می توان در تنظیمات پخش کننده > Android > تنظیمات انتشار > Minify پیدا کرد.
- ممکن است گزینهها در نسخههای مختلف Unity متفاوت باشند، بنابراین به مستندات رسمی Unity و راهنمای اشکالزدایی ساخت Firebase Unity مراجعه کنید.
- اگر پس از فعال کردن کوچکسازی، تعداد روشهای ارجاعشده همچنان از حد مجاز فراتر رفت، گزینه دیگری فعال کردن
multidex
در موارد زیر است:-
mainTemplate.gradle
اگر قالب سفارشی Gradle در تنظیمات پخش کننده فعال باشد - یا فایل
build.gradle
در سطح ماژول، اگر از Android Studio برای ساخت پروژه صادر شده استفاده می کنید.
-
شما باید ساخت را کوچک کنید تا Error while merging dex archives
جلوگیری کنید.
Node.js
- Firebase Admin SDK را به برنامه خود اضافه کنید:
npm install firebase-admin --save
- دستورالعمل های زیر را دنبال کنید تا Cloud Firestore با اعتبار مناسب در محیط خود راه اندازی کنید.
برو
- Firebase Admin SDK را به برنامه Go خود اضافه کنید:
go get firebase.google.com/go
- دستورالعمل های زیر را دنبال کنید تا Cloud Firestore با اعتبار مناسب در محیط خود راه اندازی کنید.
PHP
- کتابخانههای سرویس گیرنده سرور Cloud Firestore (جاوا، Node.js، Python، Go، PHP، C# و Ruby) از اعتبارنامه پیشفرض Google Application برای احراز هویت استفاده میکنند.
- برای احراز هویت از محیط توسعه خود، متغیر محیطی
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، Python، Go، PHP، C# و Ruby) از اعتبارنامه پیشفرض Google Application برای احراز هویت استفاده میکنند.
- برای احراز هویت از محیط توسعه خود، متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALS
را طوری تنظیم کنید که به فایل کلید حساب سرویس JSON اشاره کند. میتوانید یک فایل کلیدی در صفحه اعتبارنامه کنسول API ایجاد کنید.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 (جاوا، Node.js، Python، Go، PHP، C# و Ruby) از اعتبارنامه پیشفرض Google Application برای احراز هویت استفاده میکنند.
- برای احراز هویت از محیط توسعه خود، متغیر محیطی
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);
firebaseConfig
برنامه وب خود را جایگزین FIREBASE_CONFIGURATION کنید.
برای تداوم دادهها وقتی دستگاه اتصال خود را قطع میکند، به مستندات Enable Data Offline مراجعه کنید.
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();
firebaseConfig
برنامه وب خود را جایگزین FIREBASE_CONFIGURATION کنید.
برای تداوم دادهها وقتی دستگاه اتصال خود را قطع میکند، به مستندات Enable Data Offline مراجعه کنید.
سویفت
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
هدف-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;
جاوا
بسته به محیط شما، Cloud Firestore SDK به روش های مختلفی مقداردهی اولیه می شود. در زیر رایج ترین روش ها آورده شده است. برای یک مرجع کامل، به 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 در سرور خود، از یک حساب سرویس استفاده کنید.
به IAM & admin > حسابهای سرویس در کنسول 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 به روش های مختلفی مقداردهی اولیه می شود. در زیر رایج ترین روش ها آورده شده است. برای یک مرجع کامل، به 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 در سرور خود، از یک حساب سرویس استفاده کنید.
به IAM & admin > حسابهای سرویس در کنسول 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 به روش های مختلفی مقداردهی اولیه می شود. در زیر رایج ترین روش ها آورده شده است. برای یک مرجع کامل، به 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 در سرور خود، از یک حساب سرویس استفاده کنید.
به IAM & admin > حسابهای سرویس در کنسول 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 به روش های مختلفی مقداردهی اولیه می شود. در زیر رایج ترین روش ها آورده شده است. برای یک مرجع کامل، به 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();
- بر روی سرور خود راه اندازی کنید
برای استفاده از Firebase Admin SDK در سرور خود (یا هر محیط Node.js دیگری)، از یک حساب سرویس استفاده کنید. به IAM & admin > حسابهای سرویس در کنسول 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 به روش های مختلفی مقداردهی اولیه می شود. در زیر رایج ترین روش ها آورده شده است. برای یک مرجع کامل، به 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 در سرور خود، از یک حساب سرویس استفاده کنید.
به IAM & admin > حسابهای سرویس در کنسول Google Cloud بروید. یک کلید خصوصی جدید ایجاد کنید و فایل JSON را ذخیره کنید. سپس از فایل برای مقداردهی اولیه SDK استفاده کنید:
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
PHP
PHP
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore ، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
وحدت
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
سی شارپ
سی شارپ
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore ، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
روبی
داده ها را اضافه کنید
Cloud Firestore دادهها را در Documents ذخیره میکند که در مجموعهها ذخیره میشوند. 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)") }
هدف-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
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 مراجعه کنید.
وحدت
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)") }
هدف-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
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 مراجعه کنید.
وحدت
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 اضافه کردهاید.
شما همچنین می توانید از روش "دریافت" برای بازیابی کل مجموعه استفاده کنید.
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)") }
هدف-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()}"); } });
جاوا
پایتون
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 مراجعه کنید.
وحدت
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 پلتفرم های وب، اندروید یا Apple استفاده می کنید، از احراز هویت Firebase و Cloud Firestore Security Rules برای ایمن سازی داده های خود در Cloud Firestore استفاده کنید.
در اینجا چند مجموعه قوانین اساسی وجود دارد که می توانید برای شروع استفاده کنید. می توانید قوانین امنیتی خود را در تب Rules کنسول تغییر دهید.
احراز هویت مورد نیاز است
// 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 ، یکی از آموزش های ویدیویی زیر را تماشا کنید:
وب
iOS+
اندروید
میتوانید ویدیوهای بیشتری را در کانال YouTube Firebase بیابید.
مراحل بعدی
دانش خود را با موضوعات زیر عمیق کنید:
- Codelabs – استفاده از Cloud Firestore در یک برنامه واقعی را با دنبال کردن کد لبه برای اندروید ، iOS یا وب بیاموزید.
- مدل داده - درباره نحوه ساختار دادهها در Cloud Firestore ، از جمله دادههای سلسله مراتبی و مجموعههای فرعی بیشتر بدانید.
- افزودن داده — درباره ایجاد و به روز رسانی داده ها در Cloud Firestore بیشتر بیاموزید.
- دریافت داده — درباره نحوه بازیابی داده ها بیشتر بیاموزید.
- انجام پرس و جوهای ساده و مرکب — نحوه اجرای پرس و جوهای ساده و مرکب را بیاموزید.
- سفارش و محدود کردن درخواستها یاد بگیرید که چگونه دادههای بازگردانده شده توسط درخواستهای خود را سفارش دهید و محدود کنید.