Uygulamanızı Cloud Firestore Emulator'a bağlayın

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- önekine sahiptir.

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.
ziyaret edin.

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.

Güvenlik Kuralları değerlendirmelerini gösteren Firestore Emulator İstek Monitörü

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?