Uygulamanızı Cloud Firestore emülatörüne bağlamadan önce Firebase Local Emulator Suite iş akışını genel olarak anlarsınız, Ayrıca kurun ve yapılandırdığınız Local Emulator Suite ifadesini tıklayın ve CLI komutlarını inceleyin.
Firebase projesi seçin
Firebase Local Emulator Suite, tek bir Firebase projesi için ürün emülasyonu yapar.
Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce CLI çalıştırmasında
Çalışma dizininizde firebase use
. Ya da
her emülatöre --project
işaretini
komutuna dokunun.
Local Emulator Suite, gerçek Firebase projelerinin ve demo projeleri.
Proje türü | Özellikler | Emülatörlerle kullanım |
---|---|---|
Gerçek |
Gerçek bir Firebase projesi, sizin oluşturduğunuz ve yapılandırdığınız (büyük olasılıkla Firebase konsolu üzerinden). Gerçek projelerde veritabanı örnekleri ve depolama alanı gibi canlı kaynaklar bulunur Firebase için oluşturduğunuz paketler, işlevler veya diğer kaynaklar belirler. |
Gerçek Firebase projeleriyle çalışırken tüm işlemler için emülatörler çalıştırabilirsiniz. veya desteklenen tüm ürünler. emüle etmediğiniz tüm ürünlerde uygulamalarınız ve kodunuz live kaynakla (veri tabanı örneği, depolama alanı) grup, işlev vb.) belirtin. |
Demo |
Demo Firebase projesinin gerçek bir Firebase yapılandırması yoktur ve canlı kaynak yok. Bu projelere genellikle codelab'ler veya eğiticidir. Demo projeleri için proje kimlikleri |
Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörler aracılığıyla gerçekleştirilir. Uygulamanız bir kaynakla etkileşim kurmaya çalışırsa çalışmadığı durumlarda bu kod başarısız olur. |
Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:
- Emülatörleri, herhangi bir kod oluşturmadan da çalıştırabildiğiniz için kurulumu daha kolay Firebase projesi
- Kodunuz yanlışlıkla emülasyonsuz bir kod çağırırsa daha yüksek güvenlik sağlar (üretim) kaynaklarında, veri değişikliği, kullanım ve faturalandırma ihtimali yoktur.
- Gerektiğinde internet bağlantısı olmadığında çevrimdışı destek SDK yapılandırmanızı indirin.
Emülatörlerle konuşmak için uygulamanızı kullanın
Başlangıçta Cloud Firestore emülatörü, varsayılan veritabanını ve adlandırılmış
veritabanınızdaki her firestore
yapılandırması için
firebase.json
dosyası.
Adlandırılmış veritabanları ayrıca herhangi bir SDK veya Belirli bir veritabanına başvuran emülatöre yapılan REST API çağrıları. Böyle dolaylı olarak oluşturulan veritabanları açık kurallarla çalışır.
Varsayılan ve adlandırılmış veritabanlarınızla Emulator Suite UI, seçmek için tarayıcınızın adres çubuğunda URL'yi güncelleyin varsayılan veya adlandırılmış veritabanı olabilir.
- Örneğin, varsayılan örneğinizdeki verilere göz atmak için URL'yi
localhost:4000/firestore/default/data
. ecommerce
adlı bir örneğe göz atmak için şu şekilde güncelleyin:localhost:4000/firestore/ecommerce/data
.
Android, Apple platformları ve Web SDK'ları
Etkileşimde bulunmak için uygulama içi yapılandırmanızı veya test sınıflarınızı ayarlayın Cloud Firestore aşağıda verilmiştir. Aşağıdaki örneklerde uygulama kodunun varsayılan proje veritabanına bağlanıyor. Şunun için örnekler: Varsayılan veritabanının dışında kalan Cloud Firestore veritabanı için birden fazla veritabanı için kılavuz.
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val firestore = Firebase.firestore firestore.useEmulator("10.0.2.2", 8080) firestore.firestoreSettings = firestoreSettings { isPersistenceEnabled = false }
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.useEmulator("10.0.2.2", 8080); FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(false) .build(); firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
Cloud Functions'ı test etmek için ek kurulum gerekmez Firestore etkinlikleri tarafından tetiklenen emülatörü kullanabilirsiniz. Hem Firestore hem de Cloud Functions emülatörleri olduğunda birlikte otomatik olarak birlikte çalışırlar.
Admin SDK
Firebase Admin SDK cihazları otomatik olarak Cloud Firestore ağına bağlanır
FIRESTORE_EMULATOR_HOST
ortam değişkeni ayarlandığında emülatörü:
export FIRESTORE_EMULATOR_HOST="127.0.0.1:8080"
Kodunuz Cloud Functions emülatörünün içinde çalışıyorsa proje kimliğiniz
ve diğer yapılandırmalar, initializeApp
çağrılırken otomatik olarak ayarlanır.
Admin SDK kodunuzun şurada çalışan paylaşılan bir emülatöre bağlanmasını istiyorsanız:
başka bir ortamda kullanmak için Firebase CLI'yı kullanarak ayarladığınız proje kimliğini belirtmeniz gerekir.
Bir proje kimliğini doğrudan initializeApp
adlı iş ortağına iletebilir veya
GCLOUD_PROJECT
ortam değişkeni.
Node.js Yönetici SDK'sı
admin.initializeApp({ projectId: "your-project-id" });
Ortam Değişkeni
export GCLOUD_PROJECT="your-project-id"
Testler arasında veritabanınızı temizleme
Üretim Firestore, veritabanını temizlemek için herhangi bir platform SDK yöntemi sağlamaz, ancak Firestore emülatörü size bu amaç için özel olarak bir REST uç noktası sağlar.Bu uç nokta, test çerçevesi kurulumu/Sökümü adımından, bir test sınıfından veya test başlatılmadan önce kabuktan (ör. curl
ile) çağrılabilir. Bu yaklaşımı, emülatör işlemini kapatmaya alternatif olarak kullanabilirsiniz.
Uygun bir yöntemde, HTTP DELETE işlemi gerçekleştirin.
Firebase proje kimliği (ör. firestore-emulator-example
)
uç nokta:
"http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"
Doğal olarak kodunuz, temizleme işleminin tamamlandığına veya başarısız olduğuna dair REST onayını beklemelidir.
Bu işlemi kabuktan gerçekleştirebilirsiniz:
// Shell alternative…
$ curl -v -X DELETE "http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"
Böyle bir adım uyguladıktan sonra, testlerinizi sıraya koyabilir ve çalıştırmalar arasında eski verilerin kalıcı olarak silineceğinden emin olabilirsiniz. yeni bir temel test yapılandırması kullandığınızı varsayalım.
Verileri içe ve dışa aktarma
Veritabanı ve Cloud Storage for Firebase emülatörleri, verileri dışa aktarmanıza olanak tanır. örneğine döneceğim. Projenizde kullanılacak temel bir veri kümesi tanımlayın ve sürekli entegrasyon iş akışlarını analiz etmek ve paylaşmak üzere yüksek tutulması bakımından çok değerli.
firebase emulators:export ./dir
Testlerde, emülatör başlatılırken referans verileri içe aktarın.
firebase emulators:start --import=./dir
Emülatöre, kapanma sırasında verileri dışa aktarma talimatı vermek için
dışa aktarma yolunu kullanabilir veya --import
öğesine geçirilen yolu kullanabilirsiniz.
tıklayın.
firebase emulators:start --import=./dir --export-on-exit
Bu veri içe ve dışa aktarma seçenekleri
firebase emulators:exec
komutunu da kullanabilirsiniz. Daha fazla bilgi için
emülatör komut referansı.
Güvenlik Kuralları etkinliğini görselleştirme
Prototip ve test döngüleri üzerinde çalışırken görselleştirme araçlarını kullanabilirsiniz. ve Local Emulator Suite tarafından sağlanan raporlar.
İstek İzleyici'yi kullanma
Cloud Firestore emülatörü, istemci isteklerini Firebase Security Rules için değerlendirme izlemesi de dahil olmak üzere Emulator Suite UI.
Firestore > Ayrıntılı değerlendirmeyi görüntülemek için İstekler sekmesini tıklayın her istek için geçerli olur.
Kurallar değerlendirme raporlarını görselleştirme
Prototipinize Güvenlik Kuralları eklerken Local Emulator Suite hata ayıklama araçları.
Bir dizi test çalıştırdıktan sonra teste erişebilirsiniz. kapsam raporları arasında yer alır.
Raporları almak için, çalışırken emülatörde açık uç noktayı sorgulayın. çalışıyor. Tarayıcı dostu bir sürüm için aşağıdaki URL'yi kullanın:
http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html
Bu, kurallarınızı daha sonra kolayca kullanabileceğiniz ifadelere ve alt ifadelere Değerlendirme ve değer sayısı da dahil olmak üzere daha fazla bilgi için fareyle üzerine gelin geri döndü. Bu verilerin ham JSON sürümü için aşağıdaki URL'yi ekleyin sorgunuzda:
http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage
Burada, raporun HTML sürümü, tanımlanmamış ve boş değerli hatalara neden olan değerlendirmeleri vurgular:
Cloud Firestore emülatörünün üretimden farkı nedir?
Cloud Firestore emülatörü, davranışı doğru şekilde taklit etmeye çalışıyor üretim hizmetinin devre dışı bırakılmasına yol açıyor.
Cloud Firestore için birden fazla veritabanı desteği
Şu anda Emulator Suite UI etkileşimli oluşturmayı, düzenlemeyi, ve güvenlik görselleştirmesi gibi süreçleri içeren temel süreçleri ve ancak adlandırılmış ek veritabanları bulunmaz.
Bununla birlikte emülatörün kendisi
firebase.json
dosyanıza eklenen ve dolaylı olarak SDK veya
REST API çağrıları.
İşlemler
Emülatör şu anda tüm işlem davranışlarını uygulamıyor üretimde görüldü. Birden fazla benzersiz öğe içeren özellikleri aynı anda bir belgeye yazma işlemi gerçekleştiriyorsa emülatörün yazma işlemini tamamlaması yavaş olabilir kabul edersiniz. Bazı durumlarda kilitlerin açılması 30 saniye sürebilir. Gerekirse test zaman aşımlarını buna göre ayarlamayı düşünebilirsiniz.
Dizinler
Emülatör, bileşik dizinleri izlemez ve bunun yerine geçerli bir sorgudur. Uygulamanızı gerçek bir Cloud Firestore ile karşılaştırarak test ettiğinizden emin olun örneği oluşturun.
Sınırlar
Emülatör, üretimde uygulanan tüm sınırları zorunlu kılmaz. Örneğin, emülatör, reklamveren tarafından çok büyük çaplı reddedilecek işlemlere üretim hizmeti veriyor. Bunu bildiğinizden emin olun: belgelenmiş sınırlar ve uygulamanızı en iyi şekilde proaktif olarak önlemiş olursunuz.
Sonrasında ne olacak?
- Özenle seçilmiş bir video seti ve ayrıntılı "Nasıl yapılır?" örnekleri için Firebase Emulators Eğitimi Oynatma Listesi'ni takip edin.
- Güvenlik Kuralları testi ve Firebase Test SDK'sını içeren gelişmiş kullanım alanlarını inceleyin: Test Security Rules (Firestore).
- Tetiklenen işlevler Cloud Firestore ile tipik bir entegrasyon olduğundan Cloud Functions for Firebase emülatörü hakkında daha fazla bilgi için: İşlevleri yerel olarak çalıştırın.