Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Başlayın: İlk işlevlerinizi yazın, test edin ve devreye alın

Cloud Functions'ı kullanmaya başlamak için, gerekli kurulum görevleriyle başlayan ve iki ilgili işlevi oluşturarak, test ederek ve dağıtarak çalışan bu eğitici ile çalışmayı deneyin:

  • Bir metin değerini kabul eden ve bunu Cloud Firestore'a yazan bir URL'yi ortaya çıkaran addMessage() .
  • makeUppercase() , Cloud Firestore'da metni yazıp büyük harfe dönüştürür.

Bu örnek için kısmen Cloud Firestore ve HTTP tetiklemeli JavaScript işlevlerini seçtik çünkü bu arka plan tetikleyicileri, Firebase Local Emulator Suite aracılığıyla kapsamlı bir şekilde test edilebilir. Bu araç seti aynı zamanda Realtime Database, PubSub, Auth ve HTTP çağrılabilir tetikleyicileri de destekler. Remote Config, TestLab ve Analytics tetikleyicileri gibi diğer arka plan tetikleyici türlerinin tümü, bu sayfada açıklanmayan araç setleri kullanılarak etkileşimli olarak test edilebilir.

Bu öğreticinin aşağıdaki bölümleri, örneği oluşturmak, test etmek ve dağıtmak için gereken adımları ayrıntılı olarak açıklamaktadır. Yalnızca kodu çalıştırmayı ve incelemeyi tercih ederseniz, Tam örnek kodu gözden geçirme bölümüne gidin.

Firebase Projesi oluşturun

  1. Firebase konsolunda Proje ekle'yi tıklayın, ardından bir Proje adı seçin veya girin.

    Mevcut bir Google Cloud Platform (GCP) projeniz varsa, o projeye Firebase kaynakları eklemek için açılır menüden projeyi seçebilirsiniz.

  2. (İsteğe bağlı) Yeni bir proje oluşturuyorsanız, Proje Kimliğini düzenleyebilirsiniz.

    Firebase, Firebase projenize otomatik olarak benzersiz bir kimlik atar. Firebase'in proje kimliğini nasıl kullandığını öğrenmek için Firebase Projelerini Anlama bölümünü ziyaret edin.

  3. Devam et'i tıklayın.

  4. (İsteğe bağlı) Projeniz için, aşağıdaki Firebase ürünlerinden herhangi birini kullanarak en iyi deneyimi yaşamanızı sağlayan Google Analytics'i kurun:

    İstendiğinde, mevcut bir Google Analytics hesabını kullanmayı veya yeni bir hesap oluşturmayı seçin.
    Yeni bir hesap oluşturmayı seçerseniz, Analytics raporlama konumunuzu seçin, ardından projeniz için veri paylaşım ayarlarını ve Google Analytics şartlarını kabul edin.

  5. Proje oluştur'u (veya mevcut bir GCP projesini kullanıyorsanız Firebase Ekle'yi ) tıklayın.

Firebase, Firebase projeniz için kaynakları otomatik olarak sağlar. İşlem tamamlandığında, Firebase konsolundaki Firebase projenizin genel bakış sayfasına yönlendirileceksiniz.

Node.js ve Firebase CLI'yı ayarlayın

İşlevleri yazmak için bir Node.js ortamına ihtiyacınız olacak ve işlevleri Cloud Functions çalışma zamanına dağıtmak için Firebase CLI'ye ihtiyacınız olacak. Node.js ve npm'yi yüklemek için, Node Version Manager önerilir.

Node.js ve npm'yi yükledikten sonra , tercih ettiğiniz yöntemle Firebase CLI'yi yükleyin . CLI'yi npm aracılığıyla kurmak için şunu kullanın:

npm install -g firebase-tools

Bu, küresel olarak kullanılabilen firebase komutunu yükler. Komut başarısız olursa, npm izinlerini değiştirmeniz gerekebilir . firebase-tools en son sürümüne güncellemek için aynı komutu yeniden çalıştırın.

Projenizi başlatın

Cloud Functions için Firebase SDK'yı başlattığınızda, bağımlılıklar ve bazı minimum örnek kodlar içeren boş bir proje oluşturursunuz ve oluşturma işlevleri için TypeScript veya JavaScript'i seçersiniz. Bu eğiticinin amaçları doğrultusunda, Cloud Firestore'u da başlatmanız gerekecek.

Projenizi başlatmak için:

  1. Tarayıcı aracılığıyla firebase login yapmak ve firebase aracının kimliğini doğrulamak için firebase girişini çalıştırın.
  2. Firebase proje dizininize gidin.
  3. firebase init firestore çalıştırın. Bu eğitici için, Firestore kuralları ve dizin dosyaları istendiğinde varsayılan değerleri kabul edebilirsiniz. Henüz bu projede Bulut FireStore kullanmadıysanız, ayrıca anlatıldığı gibi Firestore için bir başlangıç modu ve konum seçmek gerekir Bulut Firestore başlayın .
  4. firebase init functions çalıştırın. Araç, bağımlılıkları npm ile kurma seçeneği sunar. Bağımlılıkları başka bir şekilde yönetmek istiyorsanız reddetmek güvenlidir, ancak reddederseniz, işlevlerinizi taklit etmeden veya dağıtmadan önce npm install çalıştırmanız gerekir.
  5. Araç, dil desteği için size iki seçenek sunar:

    Bu eğitim için JavaScript'i seçin.

Bu komutlar başarıyla tamamlandıktan sonra proje yapınız şöyle görünür:

myproject
 +- .firebaserc    # Hidden file that helps you quickly switch between
 |                 # projects with `firebase use`
 |
 +- firebase.json  # Describes properties for your project
 |
 +- functions/     # Directory containing all your functions code
      |
      +- .eslintrc.json  # Optional file containing rules for JavaScript linting.
      |
      +- package.json  # npm package file describing your Cloud Functions code
      |
      +- index.js      # main source file for your Cloud Functions code
      |
      +- node_modules/ # directory where your dependencies (declared in
                       # package.json) are installed

Başlatma sırasında oluşturulan package.json dosyası önemli bir anahtar içerir: "engines": {"node": "10"} . Bu, işlevleri yazmak ve dağıtmak için Node.js sürümünüzü belirtir. Desteklenen diğer sürümleri seçebilirsiniz .

Gerekli modülleri içe aktarın ve bir uygulamayı başlatın

Kurulum görevlerini tamamladıktan sonra, kaynak dizini açabilir ve aşağıdaki bölümlerde anlatıldığı gibi kod eklemeye başlayabilirsiniz. Bu örnek için projenizin, Node require ifadelerini kullanarak Cloud Functions ve Admin SDK modüllerini içe aktarması require . index.js dosyanıza aşağıdakine benzer satırlar ekleyin:

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access Cloud Firestore.
const admin = require('firebase-admin');
admin.initializeApp();

Bu satırlar, firebase-functions ve firebase-admin modüllerini firebase-admin ve Cloud Firestore değişikliklerinin yapılabileceği bir admin uygulaması örneğini başlatır. FCM, Authentication ve Firebase Realtime Database için olduğu gibi, Yönetici SDK desteğinin mevcut olduğu her yerde, Cloud Functions kullanarak Firebase'i entegre etmek için güçlü bir yol sağlar.

Firebase CLI, projenizi başlattığınızda Firebase ve Firebase SDK for Cloud Functions Node modüllerini otomatik olarak yükler. Projenize 3. taraf kitaplıkları eklemek için package.json npm install değiştirebilir ve npm install çalıştırabilirsiniz. Daha fazla bilgi için bkz. Bağımlılıkları İşleme .

addMessage() işlevini ekleyin

addMessage() işlevi için, şu satırları index.js ekleyin:

// Take the text parameter passed to this HTTP endpoint and insert it into 
// Cloud Firestore under the path /messages/:documentId/original
exports.addMessage = functions.https.onRequest(async (req, res) => {
  // Grab the text parameter.
  const original = req.query.text;
  // Push the new message into Cloud Firestore using the Firebase Admin SDK.
  const writeResult = await admin.firestore().collection('messages').add({original: original});
  // Send back a message that we've succesfully written the message
  res.json({result: `Message with ID: ${writeResult.id} added.`});
});

addMessage() işlevi bir HTTP uç noktasıdır. Uç noktaya yapılan herhangi bir istek, onRequest() geri onRequest() iletilen onRequest() tarzı İstek ve Yanıt nesneleriyle onRequest() .

HTTP işlevleri eşzamanlıdır ( çağrılabilir işlevlere benzer), bu nedenle olabildiğince hızlı bir şekilde yanıt göndermeli ve Cloud Firestore'u kullanarak çalışmayı ertelemelisiniz. addMessage() HTTP işlevi, HTTP uç noktasına bir metin değeri addMessage() ve bunu veritabanına /messages/:documentId/original yolu altında ekler.

makeUppercase() işlevini ekleyin

makeUppercase() işlevi için şu satırları index.js ekleyin:

// Listens for new messages added to /messages/:documentId/original and creates an
// uppercase version of the message to /messages/:documentId/uppercase
exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
    .onCreate((snap, context) => {
      // Grab the current value of what was written to Cloud Firestore.
      const original = snap.data().original;

      // Access the parameter `{documentId}` with `context.params`
      functions.logger.log('Uppercasing', context.params.documentId, original);
      
      const uppercase = original.toUpperCase();
      
      // You must return a Promise when performing asynchronous tasks inside a Functions such as
      // writing to Cloud Firestore.
      // Setting an 'uppercase' field in Cloud Firestore document returns a Promise.
      return snap.ref.set({uppercase}, {merge: true});
    });

makeUppercase() işlevi, Cloud Firestore'a yazıldığında çalıştırılır. ref.set işlevi, dinlenecek belgeyi tanımlar. Performansla ilgili nedenlerden dolayı, olabildiğince spesifik olmalısınız.

Kaşlı ayraçlar — örneğin, {documentId} —surround "parametreleri," geri aramada eşleşen verilerini açığa çıkaran joker karakterler.

Cloud Firestore, verilen belgeye veri yazıldığında veya güncellendiğinde onWrite() geri onWrite() tetikler.

Cloud Firestore etkinlikleri gibi olay odaklı işlevler eşzamansızdır. Geri çağırma işlevi bir null , bir Nesne veya bir Söz döndürmelidir. Hiçbir şey döndürmezseniz, işlev zaman aşımına uğrayarak bir hata sinyali verir ve yeniden denenir. Sync, Async ve Promises bölümüne bakın.

İşlevlerinizin yerine getirilmesini taklit edin

Firebase Local Emulator Suite , bir Firebase projesine dağıtmak yerine yerel makinenizde uygulamalar oluşturmanıza ve test etmenize olanak tanır. Geliştirme sırasında yerel test, kısmen, potansiyel olarak bir üretim ortamında (örneğin, sonsuz döngü) maliyete neden olabilecek kodlama hataları riskini azalttığı için şiddetle tavsiye edilir.

İşlevlerinizi taklit etmek için:

  1. firebase emulators:start çalıştırın firebase emulators:start Emulator Suite firebase emulators:start URL'sini firebase emulators:start ve çıktıyı kontrol edin. Varsayılan olarak localhost: 4000'dir , ancak makinenizdeki farklı bir bağlantı noktasında barındırılabilir. Emulator Suite kullanıcı arayüzünü açmak için tarayıcınıza bu URL'yi girin.

  2. firebase emulators:start çıktısını kontrol edin firebase emulators:start addMessage() HTTP işlevinin URL'si için firebase emulators:start komutu. Aşağıdakiler dışında http://localhost:5001/MY_PROJECT/us-central1/addMessage :

    1. MY_PROJECT , proje kimliğinizle değiştirilecektir.
    2. Bağlantı noktası yerel makinenizde farklı olabilir.
  3. ?text=uppercaseme sorgu dizesini işlevin URL'sinin sonuna ekleyin. Bu şuna benzer bir şeye http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme : http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme . İsteğe bağlı olarak, "üst kademe" mesajını özel bir mesaj olarak değiştirebilirsiniz.

  4. Tarayıcınızda yeni bir sekmede URL'yi açarak yeni bir mesaj oluşturun.

  5. Emulator Suite kullanıcı arayüzündeki işlevlerin etkilerini görüntüleyin:

    1. Günlükler sekmesinde, addMessage() ve makeUppercase() işlevlerinin addMessage() gösteren yeni günlükler makeUppercase() :

      i işlevleri: "addMessage" uygulamasının başlatılması

      i işlevleri: "makeUppercase" uygulamasının başlatılması

    2. Firestore sekmesinde, orijinal mesajınızın yanı sıra mesajınızın büyük harfli versiyonunu içeren bir belge görmelisiniz (eğer orijinal olarak "büyük harf" ise "UPPERCASEME" göreceksiniz).

İşlevleri bir üretim ortamına dağıtın

İşlevleriniz öykünücüde istediğiniz gibi çalışmaya başladığında, bunları üretim ortamında dağıtmaya, test etmeye ve çalıştırmaya devam edebilirsiniz. Önerilen Node.js 10 çalışma zamanı ortamına dağıtmak için projenizin Blaze kullandıkça öde faturalandırma planında olması gerektiğini unutmayın . Cloud Functions fiyatlandırmasına bakın.

Öğreticiyi tamamlamak için, işlevlerinizi dağıtın ve ardından addMessage() tetiklemek için makeUppercase() .

  1. İşlevlerinizi dağıtmak için bu komutu çalıştırın:

    $ firebase deploy --only functions
    

    Bu komutu çalıştırdıktan sonra Firebase CLI, tüm HTTP işlevi uç noktaları için URL'yi üretir. Terminalinizde aşağıdaki gibi bir çizgi görmelisiniz:

    Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage
    

    URL, proje kimliğinizin yanı sıra HTTP işlevi için bir bölge içerir. Şimdi bunun için endişelenmenize gerek olmasa da, bazı üretim HTTP işlevlerinin ağ gecikmesini en aza indirmek için bir konum belirtmesi gerekir.

    "Projeye erişim yetkisi verilemiyor" gibi erişim hatalarıyla karşılaşırsanız, proje takma adınızı kontrol etmeyi deneyin.

  2. CLI tarafından addMessage() URL çıktısını kullanarak, bir metin sorgu parametresi ekleyin ve bir tarayıcıda açın:

    https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetoo
    

    İşlev, tarayıcıyı metin dizesinin depolandığı veritabanı konumundaki Firebase konsoluna çalıştırır ve yönlendirir. Bu yazma olayı, dizenin büyük harfli sürümünü yazan makeUppercase() tetikler.

İşlevleri dağıttıktan ve çalıştırdıktan sonra, Cloud Functions için Firebase konsolunda günlükleri görüntüleyebilirsiniz . Geliştirme veya üretim aşamasındaki işlevleri silmeniz gerekiyorsa Firebase CLI'yi kullanın.

Örnek kodun tamamını inceleyin

addMessage() ve makeUppercase() işlevlerini içeren tamamlanmış functions/index.js . Bu işlevler, bir HTTP uç noktasına, Cloud Firestore'a bir değer yazan ve ardından dizedeki tüm karakterleri büyük harf yaparak dönüştüren bir parametre geçirmenize olanak tanır.

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access Cloud Firestore.
const admin = require('firebase-admin');
admin.initializeApp();

// Take the text parameter passed to this HTTP endpoint and insert it into 
// Cloud Firestore under the path /messages/:documentId/original
exports.addMessage = functions.https.onRequest(async (req, res) => {
  // Grab the text parameter.
  const original = req.query.text;
  // Push the new message into Cloud Firestore using the Firebase Admin SDK.
  const writeResult = await admin.firestore().collection('messages').add({original: original});
  // Send back a message that we've succesfully written the message
  res.json({result: `Message with ID: ${writeResult.id} added.`});
});

// Listens for new messages added to /messages/:documentId/original and creates an
// uppercase version of the message to /messages/:documentId/uppercase
exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
    .onCreate((snap, context) => {
      // Grab the current value of what was written to Cloud Firestore.
      const original = snap.data().original;

      // Access the parameter `{documentId}` with `context.params`
      functions.logger.log('Uppercasing', context.params.documentId, original);
      
      const uppercase = original.toUpperCase();
      
      // You must return a Promise when performing asynchronous tasks inside a Functions such as
      // writing to Cloud Firestore.
      // Setting an 'uppercase' field in Cloud Firestore document returns a Promise.
      return snap.ref.set({uppercase}, {merge: true});
    });

Sonraki adımlar

Bu belgelerde, Cloud Functions için genel kavramlar hakkında daha fazla bilgi ve Cloud Functions tarafından desteklenen olay türlerini işlemek için işlev yazma kılavuzları bulabilirsiniz.

Cloud Functions hakkında daha fazla bilgi edinmek için aşağıdakileri de yapabilirsiniz:

Video öğretici

Eğitim videoları izleyerek Cloud Functions hakkında daha fazla bilgi edinebilirsiniz. Bu videoda, Node.js ve CLI kurulumu dahil olmak üzere Cloud Functions'ı kullanmaya başlama konusunda ayrıntılı rehberlik bulacaksınız.