این راهنمای سریع به شما نشان میدهد که چگونه نسخه Cloud Firestore Enterprise را راهاندازی کنید، دادهها را اضافه کنید، سپس از عملیات Core یا عملیات Pipeline برای جستجوی دادههایی که اخیراً در کنسول Firebase اضافه کردهاید، استفاده کنید.
Cloud Firestore از SDK های موبایل یا وب و کتابخانه های کلاینت سرور پشتیبانی می کند:
Cloud Firestore از SDK های اندروید، iOS، وب و موارد دیگر پشتیبانی میکند. SDK های موبایل و وب، همراه با Cloud Firestore Security Rules و Firebase Authentication ، از معماری برنامههای بدون سرور پشتیبانی میکنند که در آن کلاینتها مستقیماً به پایگاه داده Cloud Firestore شما متصل میشوند.
Cloud Firestore از کتابخانههای کلاینت سرور برای جاوا، Node.js و پایتون پشتیبانی میکند. از این کتابخانههای کلاینت برای راهاندازی محیطهای سرور ممتاز با دسترسی کامل به پایگاه داده خود استفاده کنید. برای کسب اطلاعات بیشتر در مورد این کتابخانهها، به راهنمای شروع سریع برای کتابخانههای کلاینت سرور مراجعه کنید.
ایجاد یک پایگاه داده نسخه سازمانی Cloud Firestore
اگر قبلاً این کار را نکردهاید، یک پروژه Firebase ایجاد کنید: در کنسول Firebase ، روی افزودن پروژه کلیک کنید، سپس دستورالعملهای روی صفحه را برای ایجاد یک پروژه Firebase یا افزودن سرویسهای Firebase به یک پروژه Google Cloud موجود دنبال کنید.
پروژه خود را در کنسول Firebase باز کنید. در پنل سمت چپ، Build را باز کرده و سپس Firestore database را انتخاب کنید.
روی ایجاد پایگاه داده کلیک کنید.
برای حالت پایگاه داده، Enterprise را انتخاب کنید.
برای حالت عملیات، Firestore را در حالت بومی (Native Mode) انتخاب کنید که از عملیات Core و Pipeline پشتیبانی میکند.
مکانی را برای پایگاه داده خود انتخاب کنید.
یک حالت شروع برای Cloud Firestore Security Rules خود انتخاب کنید:
- حالت تست
برای شروع کار با کتابخانههای کلاینت موبایل و وب خوب است، اما به هر کسی اجازه میدهد دادههای شما را بخواند و بازنویسی کند. پس از آزمایش، حتماً بخش «دادههای خود را ایمن کنید» را مرور کنید.
برای شروع کار با وب، پلتفرمهای اپل یا اندروید SDK، حالت تست را انتخاب کنید.
- حالت تولید
تمام خواندنها و نوشتنها را از کلاینتهای موبایل و وب رد میکند. سرورهای برنامهی تأیید شدهی شما (پایتون) همچنان میتوانند به پایگاه دادهی شما دسترسی داشته باشند.
مجموعه اولیه Cloud Firestore Security Rules شما بر روی پایگاه داده پیشفرض Cloud Firestore شما اعمال خواهد شد. اگر چندین پایگاه داده برای پروژه خود ایجاد کنید، میتوانید Cloud Firestore Security Rules برای هر پایگاه داده اعمال کنید.
روی ایجاد کلیک کنید.
وقتی نسخه Cloud Firestore Enterprise را فعال میکنید، API را نیز در Cloud API Manager فعال میکند.
محیط توسعه خود را تنظیم کنید
وابستگیها و کتابخانههای کلاینت مورد نیاز را به برنامه خود اضافه کنید.
Web
- برای افزودن Firebase به برنامه وب خود، دستورالعملها را دنبال کنید.
- SDK Cloud Firestore به صورت یک بسته npm در دسترس است.
شما باید هم Firebase و هم Cloud Firestore را وارد کنید.npm install firebase@12.9.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "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.8.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.1.0") }
به دنبال یک ماژول کتابخانه مخصوص کاتلین هستید؟ از نسخه اکتبر ۲۰۲۳ ، توسعهدهندگان کاتلین و جاوا میتوانند به ماژول کتابخانه اصلی متکی باشند (برای جزئیات بیشتر، به سوالات متداول در مورد این ابتکار عمل مراجعه کنید).
مقداردهی اولیه 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); // When initializing Firestore, remember to use the name of the database you created earlier: const db = initializeFirestore(app, {}, 'your-new-enterprise-database');
FIREBASE_CONFIGURATION با firebaseConfig برنامه وب خود جایگزین کنید.
برای حفظ دادهها هنگام قطع اتصال دستگاه، به مستندات فعالسازی دادههای آفلاین مراجعه کنید.
سویفت
import FirebaseCore import FirebaseFirestore FirebaseApp.configure() // When initializing Firestore, remember to use the name of the database you created earlier: let db = Firestore.firestore(database: "your-new-enterprise-database")
Kotlin
// Access a Cloud Firestore instance from your Activity // When initializing Firestore, remember to use the name of the database you created earlier: val firestore = FirebaseFirestore.getInstance("your-new-enterprise-database")
Java
// Access a Cloud Firestore instance from your Activity // When initializing Firestore, remember to use the name of the database you created earlier: FirebaseFirestore firestore = FirebaseFirestore.getInstance("your-new-enterprise-database");
اضافه کردن دادهها با استفاده از عملیات اصلی
برای بررسی عملیات اصلی (Core operations) و عملیات خط لوله (Pipeline operations) برای پرس و جو از دادهها، دادهها را با استفاده از عملیات اصلی (Core operations) به پایگاه داده خود اضافه کنید.
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)") }
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); } });
حالا یک سند دیگر به مجموعه 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)") }
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); } });
خواندن دادهها با استفاده از عملیات اصلی
برای تأیید سریع اینکه دادهها را به 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)") }
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()); } } });
خواندن دادهها با استفاده از عملیات Pipeline
حالا میتوانید تجربهی پرسوجوی Pipeline را با تجربهی پرسوجوی Core مقایسه کنید.
Web
// The import/require of "firebase/firestore/pipelines" has a side-effect // of extending the Firestore class with the `.pipeline()` method. // Without this import/require, you will not be able to create a Pipeline. // import { execute } from "firebase/firestore/pipelines"; const readDataPipeline = db.pipeline() .collection("users"); // Execute the pipeline and handle the result try { const querySnapshot = await execute(readDataPipeline); querySnapshot.results.forEach((result) => { console.log(`${result.id} => ${result.data()}`); }); } catch (error) { console.error("Error getting documents: ", error); }
سویفت
do { // Initialize a Firestore Pipeline instance and specify the "users" collection as the // input stage. let snapshot = try await db.pipeline() .collection("users") .execute() // Execute the pipeline to retrieve documents. // Iterate through the documents in the pipeline results, similar to a regular query // snapshot. for result in snapshot.results { print("\(result.id ?? "no ID") => \(result.data)") } } catch { print("Error getting documents with pipeline: \(error)") }
Kotlin
val readDataPipeline = db.pipeline() .collection("users") // Execute the pipeline and handle the result readDataPipeline.execute() .addOnSuccessListener { result -> for (document in result) { println("${document.getId()} => ${document.getData()}") } } .addOnFailureListener { exception -> println("Error getting documents: $exception") }
Java
Pipeline readDataPipeline = db.pipeline() .collection("users"); readDataPipeline.execute() .addOnSuccessListener(new OnSuccessListener<Pipeline.Snapshot>() { @Override public void onSuccess(Pipeline.Snapshot snapshot) { for (PipelineResult result : snapshot.getResults()) { System.out.println(result.getId() + " => " + result.getData()); } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { System.out.println("Error getting documents: " + e); } });
دادههای خود را برای SDKهای موبایل و وب ایمن کنید
اگر از 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 استفاده کنید.
مراحل بعدی
دانش خود را در مورد عملیات هسته و خط لوله با مباحث زیر عمیقتر کنید:
- درباره پرسوجو با عملیات اصلی بیشتر بدانید
- درباره پرسوجو با عملیات Pipeline بیشتر بدانید.
این راهنمای سریع به شما نشان میدهد که چگونه نسخه Cloud Firestore Enterprise را راهاندازی کنید، دادهها را اضافه کنید، سپس از عملیات Core یا عملیات Pipeline برای جستجوی دادههایی که اخیراً در کنسول Firebase اضافه کردهاید، استفاده کنید.
Cloud Firestore از SDK های موبایل یا وب و کتابخانه های کلاینت سرور پشتیبانی می کند:
Cloud Firestore از SDK های اندروید، iOS، وب و موارد دیگر پشتیبانی میکند. SDK های موبایل و وب، همراه با Cloud Firestore Security Rules و Firebase Authentication ، از معماری برنامههای بدون سرور پشتیبانی میکنند که در آن کلاینتها مستقیماً به پایگاه داده Cloud Firestore شما متصل میشوند.
Cloud Firestore از کتابخانههای کلاینت سرور برای جاوا، Node.js و پایتون پشتیبانی میکند. از این کتابخانههای کلاینت برای راهاندازی محیطهای سرور ممتاز با دسترسی کامل به پایگاه داده خود استفاده کنید. برای کسب اطلاعات بیشتر در مورد این کتابخانهها، به راهنمای شروع سریع برای کتابخانههای کلاینت سرور مراجعه کنید.
ایجاد یک پایگاه داده نسخه سازمانی Cloud Firestore
اگر قبلاً این کار را نکردهاید، یک پروژه Firebase ایجاد کنید: در کنسول Firebase ، روی افزودن پروژه کلیک کنید، سپس دستورالعملهای روی صفحه را برای ایجاد یک پروژه Firebase یا افزودن سرویسهای Firebase به یک پروژه Google Cloud موجود دنبال کنید.
پروژه خود را در کنسول Firebase باز کنید. در پنل سمت چپ، Build را باز کرده و سپس Firestore database را انتخاب کنید.
روی ایجاد پایگاه داده کلیک کنید.
برای حالت پایگاه داده، Enterprise را انتخاب کنید.
برای حالت عملیات، Firestore را در حالت بومی (Native Mode) انتخاب کنید که از عملیات Core و Pipeline پشتیبانی میکند.
مکانی را برای پایگاه داده خود انتخاب کنید.
یک حالت شروع برای Cloud Firestore Security Rules خود انتخاب کنید:
- حالت تست
برای شروع کار با کتابخانههای کلاینت موبایل و وب خوب است، اما به هر کسی اجازه میدهد دادههای شما را بخواند و بازنویسی کند. پس از آزمایش، حتماً بخش «دادههای خود را ایمن کنید» را مرور کنید.
برای شروع کار با وب، پلتفرمهای اپل یا اندروید SDK، حالت تست را انتخاب کنید.
- حالت تولید
تمام خواندنها و نوشتنها را از کلاینتهای موبایل و وب رد میکند. سرورهای برنامهی تأیید شدهی شما (پایتون) همچنان میتوانند به پایگاه دادهی شما دسترسی داشته باشند.
مجموعه اولیه Cloud Firestore Security Rules شما بر روی پایگاه داده پیشفرض Cloud Firestore شما اعمال خواهد شد. اگر چندین پایگاه داده برای پروژه خود ایجاد کنید، میتوانید Cloud Firestore Security Rules برای هر پایگاه داده اعمال کنید.
روی ایجاد کلیک کنید.
وقتی نسخه Cloud Firestore Enterprise را فعال میکنید، API را نیز در Cloud API Manager فعال میکند.
محیط توسعه خود را تنظیم کنید
وابستگیها و کتابخانههای کلاینت مورد نیاز را به برنامه خود اضافه کنید.
Web
- برای افزودن Firebase به برنامه وب خود، دستورالعملها را دنبال کنید.
- SDK Cloud Firestore به صورت یک بسته npm در دسترس است.
شما باید هم Firebase و هم Cloud Firestore را وارد کنید.npm install firebase@12.9.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "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.8.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.1.0") }
به دنبال یک ماژول کتابخانه مخصوص کاتلین هستید؟ از نسخه اکتبر ۲۰۲۳ ، توسعهدهندگان کاتلین و جاوا میتوانند به ماژول کتابخانه اصلی متکی باشند (برای جزئیات بیشتر، به سوالات متداول در مورد این ابتکار عمل مراجعه کنید).
مقداردهی اولیه 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); // When initializing Firestore, remember to use the name of the database you created earlier: const db = initializeFirestore(app, {}, 'your-new-enterprise-database');
FIREBASE_CONFIGURATION با firebaseConfig برنامه وب خود جایگزین کنید.
برای حفظ دادهها هنگام قطع اتصال دستگاه، به مستندات فعالسازی دادههای آفلاین مراجعه کنید.
سویفت
import FirebaseCore import FirebaseFirestore FirebaseApp.configure() // When initializing Firestore, remember to use the name of the database you created earlier: let db = Firestore.firestore(database: "your-new-enterprise-database")
Kotlin
// Access a Cloud Firestore instance from your Activity // When initializing Firestore, remember to use the name of the database you created earlier: val firestore = FirebaseFirestore.getInstance("your-new-enterprise-database")
Java
// Access a Cloud Firestore instance from your Activity // When initializing Firestore, remember to use the name of the database you created earlier: FirebaseFirestore firestore = FirebaseFirestore.getInstance("your-new-enterprise-database");
اضافه کردن دادهها با استفاده از عملیات اصلی
برای بررسی عملیات اصلی (Core operations) و عملیات خط لوله (Pipeline operations) برای پرس و جو از دادهها، دادهها را با استفاده از عملیات اصلی (Core operations) به پایگاه داده خود اضافه کنید.
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)") }
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); } });
حالا یک سند دیگر به مجموعه 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)") }
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); } });
خواندن دادهها با استفاده از عملیات اصلی
برای تأیید سریع اینکه دادهها را به 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)") }
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()); } } });
خواندن دادهها با استفاده از عملیات Pipeline
حالا میتوانید تجربهی پرسوجوی Pipeline را با تجربهی پرسوجوی Core مقایسه کنید.
Web
// The import/require of "firebase/firestore/pipelines" has a side-effect // of extending the Firestore class with the `.pipeline()` method. // Without this import/require, you will not be able to create a Pipeline. // import { execute } from "firebase/firestore/pipelines"; const readDataPipeline = db.pipeline() .collection("users"); // Execute the pipeline and handle the result try { const querySnapshot = await execute(readDataPipeline); querySnapshot.results.forEach((result) => { console.log(`${result.id} => ${result.data()}`); }); } catch (error) { console.error("Error getting documents: ", error); }
سویفت
do { // Initialize a Firestore Pipeline instance and specify the "users" collection as the // input stage. let snapshot = try await db.pipeline() .collection("users") .execute() // Execute the pipeline to retrieve documents. // Iterate through the documents in the pipeline results, similar to a regular query // snapshot. for result in snapshot.results { print("\(result.id ?? "no ID") => \(result.data)") } } catch { print("Error getting documents with pipeline: \(error)") }
Kotlin
val readDataPipeline = db.pipeline() .collection("users") // Execute the pipeline and handle the result readDataPipeline.execute() .addOnSuccessListener { result -> for (document in result) { println("${document.getId()} => ${document.getData()}") } } .addOnFailureListener { exception -> println("Error getting documents: $exception") }
Java
Pipeline readDataPipeline = db.pipeline() .collection("users"); readDataPipeline.execute() .addOnSuccessListener(new OnSuccessListener<Pipeline.Snapshot>() { @Override public void onSuccess(Pipeline.Snapshot snapshot) { for (PipelineResult result : snapshot.getResults()) { System.out.println(result.getId() + " => " + result.getData()); } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { System.out.println("Error getting documents: " + e); } });
دادههای خود را برای SDKهای موبایل و وب ایمن کنید
اگر از 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 استفاده کنید.
مراحل بعدی
دانش خود را در مورد عملیات هسته و خط لوله با مباحث زیر عمیقتر کنید:
- درباره پرسوجو با عملیات اصلی بیشتر بدانید
- درباره پرسوجو با عملیات Pipeline بیشتر بدانید.