يوضّح هذا المستند كيفية إعداد مستندات فردية أو إضافتها أو تعديلها في Cloud Firestore. لكتابة البيانات بشكلٍ مجمّع، اطّلِع على المعاملات وعمليات الكتابة المجمّعة.
نظرة عامة
يمكنك كتابة البيانات في Cloud Firestore بإحدى الطريقتَين التاليتَين:
- اضبط بيانات مستند ضمن مجموعة، مع تحديد هُوية مستند بشكل صريح.
- أضِف مستندًا جديدًا إلى مجموعة. في هذه الحالة، ينشئ Cloud Firestore معرّف المستند تلقائيًا.
- أنشئ مستندًا فارغًا يتضمّن معرّفًا يتم إنشاؤه تلقائيًا، وحدِّد البيانات له لاحقًا.
قبل البدء
قبل أن تتمكّن من بدء Cloud Firestore لضبط البيانات أو إضافتها أو تعديلها، يجب إكمال الخطوات التالية:
- أنشئ قاعدة بيانات Cloud Firestore. لمزيد من المعلومات، يُرجى الاطّلاع على البدء في استخدام Cloud Firestore.
- إذا كنت تستخدم مكتبات عملاء الويب أو الأجهزة الجوّالة، يمكنك المصادقة باستخدام قواعد الأمان. لمزيد من المعلومات، يُرجى الاطّلاع على البدء في استخدام قواعد الأمان.
- إذا كنت تستخدم مكتبات عملاء الخادم أو واجهة برمجة التطبيقات REST API، يمكنك المصادقة باستخدام ميزة "إدارة الهوية والوصول" (IAM). لمزيد من المعلومات، يُرجى الاطّلاع على أمان مكتبات عملاء الخادم.
بدء Cloud Firestore
يمكنك إعداد مثيل من Cloud Firestore:
Web
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
استبدِل FIREBASE_CONFIGURATION برمز
firebaseConfig
لتطبيق الويب.
للحفاظ على البيانات عندما يفقد الجهاز الاتصال بالإنترنت، اطّلِع على مستندات تفعيل البيانات بلا إنترنت.
Web
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
استبدِل FIREBASE_CONFIGURATION بعلامة
firebaseConfig
لتطبيق الويب.
للحفاظ على البيانات عندما يفقد الجهاز الاتصال بالإنترنت، اطّلِع على مستندات تفعيل البيانات بلا إنترنت.
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin
// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
جافا
يتمّ إعداد حزمة SDK لنظام التشغيل Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. في ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجِع بدء استخدام حزمة SDK للمشرف.import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use the application default credentials GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .setProjectId(projectId) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
لاستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. بعد ذلك، استخدِم الملف لإعداد حزمة SDK:
import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use a service account InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json"); GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
Python
يتمّ إعداد حزمة SDK لنظام التشغيل Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. في ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجِع بدء استخدام حزمة SDK للمشرف.import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
يمكن أيضًا استخدام بيانات اعتماد تلقائية حالية للتطبيق لبدء حزمة SDK.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore.client()
لاستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. بعد ذلك، استخدِم الملف لإعداد حزمة SDK:
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore.client()
Python
يتمّ إعداد حزمة SDK لنظام التشغيل Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. في ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجِع بدء استخدام حزمة SDK للمشرف.import firebase_admin from firebase_admin import firestore_async # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore_async.client()
يمكن أيضًا استخدام بيانات اعتماد تلقائية حالية للتطبيق لبدء حزمة SDK.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore_async.client()
لاستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. بعد ذلك، استخدِم الملف لإعداد حزمة SDK:
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore_async.client()
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Node.js
يتمّ إعداد حزمة SDK لنظام التشغيل Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. في ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجِع بدء استخدام حزمة SDK للمشرف.-
الإعداد في Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
الإعداد في Google Cloud
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
-
الإعداد على خادمك الخاص
لاستخدام حزمة تطوير البرامج (SDK) لإدارة Firebase على خادمك الخاص (أو أي بيئة أخرى من Node.js)، استخدِم حساب خدمة. انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. بعد ذلك، استخدِم الملف لإعداد حزمة SDK:
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
انتقال
يتمّ إعداد حزمة SDK لنظام التشغيل Cloud Firestore بطرق مختلفة استنادًا إلى بيئتك. في ما يلي الطرق الأكثر شيوعًا. للحصول على مرجع كامل، راجِع بدء استخدام حزمة SDK للمشرف.import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use the application default credentials ctx := context.Background() conf := &firebase.Config{ProjectID: projectID} app, err := firebase.NewApp(ctx, conf) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
لاستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase على خادمك الخاص، استخدِم حساب خدمة.
انتقِل إلى إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة في Google Cloud Console. أنشئ مفتاحًا خاصًا جديدًا واحفظ ملف JSON. بعد ذلك، استخدِم الملف لإعداد حزمة SDK:
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
PHP
PHP
لمزيد من المعلومات عن تثبيت وإنشاء عملاء Cloud Firestore، يُرجى الرجوع إلى مكتبات عملاء Cloud Firestore.
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
#C
#C
لمزيد من المعلومات عن تثبيت وإنشاء عملاء Cloud Firestore، يُرجى الرجوع إلى مكتبات عملاء Cloud Firestore.
لغة Ruby
ضبط مستند
لإنشاء مستند واحد أو استبداله، استخدِم طرق set()
التالية الخاصة باللغة:
Web
استخدِم طريقة setDoc()
:
import { doc, setDoc } from "firebase/firestore"; // Add a new document in collection "cities" await setDoc(doc(db, "cities", "LA"), { name: "Los Angeles", state: "CA", country: "USA" });
Web
استخدِم طريقة set()
:
// Add a new document in collection "cities" db.collection("cities").doc("LA").set({ name: "Los Angeles", state: "CA", country: "USA" }) .then(() => { console.log("Document successfully written!"); }) .catch((error) => { console.error("Error writing document: ", error); });
Swift
استخدِم طريقة setData()
:
// Add a new document in collection "cities" do { try await db.collection("cities").document("LA").setData([ "name": "Los Angeles", "state": "CA", "country": "USA" ]) print("Document successfully written!") } catch { print("Error writing document: \(error)") }
Objective-C
استخدِم طريقة setData:
:
// Add a new document in collection "cities" [[[self.db collectionWithPath:@"cities"] documentWithPath:@"LA"] setData:@{ @"name": @"Los Angeles", @"state": @"CA", @"country": @"USA" } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error writing document: %@", error); } else { NSLog(@"Document successfully written!"); } }];
Kotlin
استخدِم طريقة set()
:
val city = hashMapOf( "name" to "Los Angeles", "state" to "CA", "country" to "USA", ) db.collection("cities").document("LA") .set(city) .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully written!") } .addOnFailureListener { e -> Log.w(TAG, "Error writing document", e) }
Java
استخدِم طريقة set()
:
Map<String, Object> city = new HashMap<>(); city.put("name", "Los Angeles"); city.put("state", "CA"); city.put("country", "USA"); db.collection("cities").document("LA") .set(city) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully written!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error writing document", e); } });
Dart
استخدِم طريقة set()
:
final city = <String, String>{ "name": "Los Angeles", "state": "CA", "country": "USA" }; db .collection("cities") .doc("LA") .set(city) .onError((e, _) => print("Error writing document: $e"));
جافا
استخدِم طريقة set()
:
Python
استخدِم طريقة set()
:
Python
استخدِم طريقة set()
:
C++
استخدِم طريقة Set()
:
// Add a new document in collection 'cities' db->Collection("cities") .Document("LA") .Set({{"name", FieldValue::String("Los Angeles")}, {"state", FieldValue::String("CA")}, {"country", FieldValue::String("USA")}}) .OnCompletion([](const Future<void>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot successfully written!" << std::endl; } else { std::cout << "Error writing document: " << future.error_message() << std::endl; } });
Node.js
استخدِم طريقة set()
:
انتقال
استخدِم طريقة Set()
:
PHP
استخدِم طريقة set()
:
PHP
لمزيد من المعلومات عن تثبيت وإنشاء عملاء Cloud Firestore، يُرجى الرجوع إلى مكتبات عملاء Cloud Firestore.
Unity
استخدِم طريقة SetAsync()
:
DocumentReference docRef = db.Collection("cities").Document("LA"); Dictionary<string, object> city = new Dictionary<string, object> { { "Name", "Los Angeles" }, { "State", "CA" }, { "Country", "USA" } }; docRef.SetAsync(city).ContinueWithOnMainThread(task => { Debug.Log("Added data to the LA document in the cities collection."); });
#C
استخدِم طريقة SetAsync()
:
لغة Ruby
استخدِم طريقة set()
:
إذا لم يكن المستند متوفّرًا، سيتم إنشاؤه. إذا كان المستند متوفّرًا، سيتم استبدال محتوياته بالبيانات المقدَّمة حديثًا، ما لم يتم تحديد أنّه يجب دمج البيانات في المستند الحالي، على النحو التالي:
Web
import { doc, setDoc } from "firebase/firestore"; const cityRef = doc(db, 'cities', 'BJ'); setDoc(cityRef, { capital: true }, { merge: true });
Web
var cityRef = db.collection('cities').doc('BJ'); var setWithMerge = cityRef.set({ capital: true }, { merge: true });
Swift
// Update one field, creating the document if it does not exist. db.collection("cities").document("BJ").setData([ "capital": true ], merge: true)
Objective-C
// Write to the document reference, merging data with existing // if the document already exists [[[self.db collectionWithPath:@"cities"] documentWithPath:@"BJ"] setData:@{ @"capital": @YES } merge:YES completion:^(NSError * _Nullable error) { // ... }];
Kotlin
// Update one field, creating the document if it does not already exist. val data = hashMapOf("capital" to true) db.collection("cities").document("BJ") .set(data, SetOptions.merge())
Java
// Update one field, creating the document if it does not already exist. Map<String, Object> data = new HashMap<>(); data.put("capital", true); db.collection("cities").document("BJ") .set(data, SetOptions.merge());
Dart
// Update one field, creating the document if it does not already exist. final data = {"capital": true}; db.collection("cities").doc("BJ").set(data, SetOptions(merge: true));
جافا
Python
Python
C++
db->Collection("cities").Document("BJ").Set( {{"capital", FieldValue::Boolean(true)}}, SetOptions::Merge());
Node.js
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت وإنشاء عملاء Cloud Firestore، يُرجى الرجوع إلى مكتبات عملاء Cloud Firestore.
Unity
DocumentReference docRef = db.Collection("cities").Document("LA"); Dictionary<string, object> update = new Dictionary<string, object> { { "capital", false } }; docRef.SetAsync(update, SetOptions.MergeAll);
#C
لغة Ruby
إذا لم تكن متأكدًا من توفّر المستند، فعِّل خيار دمج البيانات الجديدة مع أي مستند حالي لتجنُّب استبدال المستندات بأكملها. بالنسبة إلى المستندات التي تحتوي على خرائط، إذا حدّدت مجموعة تحتوي على حقل يحتوي على خريطة فارغة، يتم استبدال حقل الخريطة في المستند المستهدَف.
أنواع البيانات
تتيح لك Cloud Firestore كتابة مجموعة متنوعة من أنواع البيانات داخل مستند، بما في ذلك السلاسل والقيم المنطقية والأرقام والتواريخ والقيم الخالية والصفائف المُدمجة والعناصر المُدمجة. تخزِّن Cloud Firestore الأرقام دائمًا كأرقام مزدوجة، بغض النظر عن نوع الرقم الذي تستخدمه في الرمز.
Web
import { doc, setDoc, Timestamp } from "firebase/firestore"; const docData = { stringExample: "Hello world!", booleanExample: true, numberExample: 3.14159265, dateExample: Timestamp.fromDate(new Date("December 10, 1815")), arrayExample: [5, true, "hello"], nullExample: null, objectExample: { a: 5, b: { nested: "foo" } } }; await setDoc(doc(db, "data", "one"), docData);
Web
var docData = { stringExample: "Hello world!", booleanExample: true, numberExample: 3.14159265, dateExample: firebase.firestore.Timestamp.fromDate(new Date("December 10, 1815")), arrayExample: [5, true, "hello"], nullExample: null, objectExample: { a: 5, b: { nested: "foo" } } }; db.collection("data").doc("one").set(docData).then(() => { console.log("Document successfully written!"); });
Swift
let docData: [String: Any] = [ "stringExample": "Hello world!", "booleanExample": true, "numberExample": 3.14159265, "dateExample": Timestamp(date: Date()), "arrayExample": [5, true, "hello"], "nullExample": NSNull(), "objectExample": [ "a": 5, "b": [ "nested": "foo" ] ] ] do { try await db.collection("data").document("one").setData(docData) print("Document successfully written!") } catch { print("Error writing document: \(error)") }
Objective-C
NSDictionary *docData = @{ @"stringExample": @"Hello world!", @"booleanExample": @YES, @"numberExample": @3.14, @"dateExample": [FIRTimestamp timestampWithDate:[NSDate date]], @"arrayExample": @[@5, @YES, @"hello"], @"nullExample": [NSNull null], @"objectExample": @{ @"a": @5, @"b": @{ @"nested": @"foo" } } }; [[[self.db collectionWithPath:@"data"] documentWithPath:@"one"] setData:docData completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error writing document: %@", error); } else { NSLog(@"Document successfully written!"); } }];
Kotlin
val docData = hashMapOf( "stringExample" to "Hello world!", "booleanExample" to true, "numberExample" to 3.14159265, "dateExample" to Timestamp(Date()), "listExample" to arrayListOf(1, 2, 3), "nullExample" to null, ) val nestedData = hashMapOf( "a" to 5, "b" to true, ) docData["objectExample"] = nestedData db.collection("data").document("one") .set(docData) .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully written!") } .addOnFailureListener { e -> Log.w(TAG, "Error writing document", e) }
Java
Map<String, Object> docData = new HashMap<>(); docData.put("stringExample", "Hello world!"); docData.put("booleanExample", true); docData.put("numberExample", 3.14159265); docData.put("dateExample", new Timestamp(new Date())); docData.put("listExample", Arrays.asList(1, 2, 3)); docData.put("nullExample", null); Map<String, Object> nestedData = new HashMap<>(); nestedData.put("a", 5); nestedData.put("b", true); docData.put("objectExample", nestedData); db.collection("data").document("one") .set(docData) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully written!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error writing document", e); } });
Dart
final docData = { "stringExample": "Hello world!", "booleanExample": true, "numberExample": 3.14159265, "dateExample": Timestamp.now(), "listExample": [1, 2, 3], "nullExample": null }; final nestedData = { "a": 5, "b": true, }; docData["objectExample"] = nestedData; db .collection("data") .doc("one") .set(docData) .onError((e, _) => print("Error writing document: $e"));
جافا
Python
Python
C++
MapFieldValue doc_data{ {"stringExample", FieldValue::String("Hello world!")}, {"booleanExample", FieldValue::Boolean(true)}, {"numberExample", FieldValue::Double(3.14159265)}, {"dateExample", FieldValue::Timestamp(Timestamp::Now())}, {"arrayExample", FieldValue::Array({FieldValue::Integer(1), FieldValue::Integer(2), FieldValue::Integer(3)})}, {"nullExample", FieldValue::Null()}, {"objectExample", FieldValue::Map( {{"a", FieldValue::Integer(5)}, {"b", FieldValue::Map( {{"nested", FieldValue::String("foo")}})}})}, }; db->Collection("data").Document("one").Set(doc_data).OnCompletion( [](const Future<void>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot successfully written!" << std::endl; } else { std::cout << "Error writing document: " << future.error_message() << std::endl; } });
Node.js
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت وإنشاء عملاء Cloud Firestore، يُرجى الرجوع إلى مكتبات عملاء Cloud Firestore.
Unity
DocumentReference docRef = db.Collection("data").Document("one"); Dictionary<string, object> docData = new Dictionary<string, object> { { "stringExample", "Hello World" }, { "booleanExample", false }, { "numberExample", 3.14159265 }, { "nullExample", null }, { "arrayExample", new List<object>() { 5, true, "Hello" } }, { "objectExample", new Dictionary<string, object> { { "a", 5 }, { "b", true }, } }, }; docRef.SetAsync(docData);
#C
لغة Ruby
العناصر المخصّصة
غالبًا ما يكون استخدام عناصر Map
أو Dictionary
لتمثيل مستنداتك
غير ملائم، لذا يتيح Cloud Firestore كتابة المستندات باستخدام فئات
مخصّصة. Cloud Firestore تحوّل العناصر إلى أنواع بيانات متوافقة.
باستخدام الفئات المخصّصة، يمكنك إعادة كتابة المثال الأوّلي بالطريقة التالية:
Web
class City { constructor (name, state, country ) { this.name = name; this.state = state; this.country = country; } toString() { return this.name + ', ' + this.state + ', ' + this.country; } } // Firestore data converter const cityConverter = { toFirestore: (city) => { return { name: city.name, state: city.state, country: city.country }; }, fromFirestore: (snapshot, options) => { const data = snapshot.data(options); return new City(data.name, data.state, data.country); } };
Web
class City { constructor (name, state, country ) { this.name = name; this.state = state; this.country = country; } toString() { return this.name + ', ' + this.state + ', ' + this.country; } } // Firestore data converter var cityConverter = { toFirestore: function(city) { return { name: city.name, state: city.state, country: city.country }; }, fromFirestore: function(snapshot, options){ const data = snapshot.data(options); return new City(data.name, data.state, data.country); } };
Swift
public struct City: Codable { let name: String let state: String? let country: String? let isCapital: Bool? let population: Int64? enum CodingKeys: String, CodingKey { case name case state case country case isCapital = "capital" case population } }
Objective-C
// This isn't supported in Objective-C.
Kotlin
data class City( val name: String? = null, val state: String? = null, val country: String? = null, @field:JvmField // use this annotation if your Boolean field is prefixed with 'is' val isCapital: Boolean? = null, val population: Long? = null, val regions: List<String>? = null, )
Java
يجب أن تحتوي كل فئة مخصّصة على أسلوب إنشاء علني لا يقبل أيّ وسيطات. بالإضافة إلى ذلك، يجب أن تتضمّن الفئة طريقة عامة للحصول على كل سمة.
public class City { private String name; private String state; private String country; private boolean capital; private long population; private List<String> regions; public City() {} public City(String name, String state, String country, boolean capital, long population, List<String> regions) { // ... } public String getName() { return name; } public String getState() { return state; } public String getCountry() { return country; } public boolean isCapital() { return capital; } public long getPopulation() { return population; } public List<String> getRegions() { return regions; } }
Dart
class City { final String? name; final String? state; final String? country; final bool? capital; final int? population; final List<String>? regions; City({ this.name, this.state, this.country, this.capital, this.population, this.regions, }); factory City.fromFirestore( DocumentSnapshot<Map<String, dynamic>> snapshot, SnapshotOptions? options, ) { final data = snapshot.data(); return City( name: data?['name'], state: data?['state'], country: data?['country'], capital: data?['capital'], population: data?['population'], regions: data?['regions'] is Iterable ? List.from(data?['regions']) : null, ); } Map<String, dynamic> toFirestore() { return { if (name != null) "name": name, if (state != null) "state": state, if (country != null) "country": country, if (capital != null) "capital": capital, if (population != null) "population": population, if (regions != null) "regions": regions, }; } }
جافا
Python
Python
C++
// This is not yet supported.
Node.js
// Node.js uses JavaScript objects
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت وإنشاء عملاء Cloud Firestore، يُرجى الرجوع إلى مكتبات عملاء Cloud Firestore.
Unity
[FirestoreData] public class City { [FirestoreProperty] public string Name { get; set; } [FirestoreProperty] public string State { get; set; } [FirestoreProperty] public string Country { get; set; } [FirestoreProperty] public bool Capital { get; set; } [FirestoreProperty] public long Population { get; set; } }
#C
لغة Ruby
// This isn't supported in Ruby
Web
import { doc, setDoc } from "firebase/firestore"; // Set with cityConverter const ref = doc(db, "cities", "LA").withConverter(cityConverter); await setDoc(ref, new City("Los Angeles", "CA", "USA"));
Web
// Set with cityConverter db.collection("cities").doc("LA") .withConverter(cityConverter) .set(new City("Los Angeles", "CA", "USA"));
Swift
let city = City(name: "Los Angeles", state: "CA", country: "USA", isCapital: false, population: 5000000) do { try db.collection("cities").document("LA").setData(from: city) } catch let error { print("Error writing city to Firestore: \(error)") }
Objective-C
// This isn't supported in Objective-C.
Kotlin
val city = City( "Los Angeles", "CA", "USA", false, 5000000L, listOf("west_coast", "socal"), ) db.collection("cities").document("LA").set(city)
Java
City city = new City("Los Angeles", "CA", "USA", false, 5000000L, Arrays.asList("west_coast", "sorcal")); db.collection("cities").document("LA").set(city);
Dart
final city = City( name: "Los Angeles", state: "CA", country: "USA", capital: false, population: 5000000, regions: ["west_coast", "socal"], ); final docRef = db .collection("cities") .withConverter( fromFirestore: City.fromFirestore, toFirestore: (City city, options) => city.toFirestore(), ) .doc("LA"); await docRef.set(city);
جافا
Python
Python
C++
// This is not yet supported.
Node.js
// Node.js uses JavaScript objects
انتقال
PHP
// This isn't supported in PHP.
Unity
DocumentReference docRef = db.Collection("cities").Document("LA"); City city = new City { Name = "Los Angeles", State = "CA", Country = "USA", Capital = false, Population = 3900000L }; docRef.SetAsync(city);
#C
لغة Ruby
// This isn't supported in Ruby.
إضافة مستند
عند استخدام set()
لإنشاء مستند، يجب تحديد رقم تعريف
للمستند الذي تريد إنشاؤه، كما هو موضّح في المثال التالي:
Web
import { doc, setDoc } from "firebase/firestore"; await setDoc(doc(db, "cities", "new-city-id"), data);
Web
db.collection("cities").doc("new-city-id").set(data);
Swift
db.collection("cities").document("new-city-id").setData(data)
Objective-C
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"new-city-id"] setData:data];
Kotlin
db.collection("cities").document("new-city-id").set(data)
Java
db.collection("cities").document("new-city-id").set(data);
Dart
db.collection("cities").doc("new-city-id").set({"name": "Chicago"});
جافا
Python
Python
C++
db->Collection("cities").Document("SF").Set({/*some data*/});