17

Tüm Bulut İşlevlerimizi Firebase için organize etmenin en iyi yolu nedir?Firebase için Bulut İşlevlerini Düzenleyin

Tüm işlevlerin tek bir index.js dosyasında bulunduğu sample GitHub repository dosyasından görüyorum.

Daha büyük bir proje için, farklı dosyalarda/dizinlerde Firebase için Bulut İşlevlerini düzenlemenin daha iyi bir yaklaşımı olduğunu düşünüyorum.

+3

Bu bir fikir konusudur ve Stack Overflow için uygun değildir. Ancak, diğer dosyalardan index.js'ye kod yazmak için require() işlevini kullanabileceğinizi bilmelisiniz. Bundan sonra, organizasyon ne istersen. –

+0

Teşekkür ederim @DougStevenson, bu soruma cevap ver. –

+1

Örneğim buraya bakın: http://stackoverflow.com/questions/42726310/how-to-test-firebase-functions-locally-on-pc/42729988#42729988 Bu, Bulut İşlevlerinin biraz eski bir sürümünden geliyor, ancak kavramlar hala aynı çalışıyor. –

cevap

4

Ben triggers adlı bir klasörde sağlayıcı ve kaynak tarafından benim olay işleyicileri düzenlemektedir. Örneğin. Burada auth sağlayıcısı ve user kaynağıdır; functions/triggers/auth/user klasörü, sırasıyla bir kullanıcıyı memnuniyetle karşılayan ve temizleyen bir onCreate.js ve onDelete.js içerir.

+--/auth 
| +--/user 
|  +--/onCreate.js 
|  +--/onDelete.js 
+--/database 
+--/storage 

Sen require işlevini kullanarak belirli bir tetikleyici verebilirsiniz:

exports.onCreateAuthUser = require('./triggers/auth/user/onCreate');  
exports.onDeleteAuthUser = require('./triggers/auth/user/onDelete'); 

Ben bir adım daha ileri gitti ve benim için otomatik işlevleri verir bir komut dosyası oluşturdu. Dosyaların uzantısını f.js olarak değiştiririm ve tetikleyici dizinini yinelemeli olarak ararım. Bulunan her dosya için, dizin ve dosya yolunu ayırarak işlev adı çağrılır.

Bu yapı, firebase-functions npm paketinin iç yapısını denetleyerek esinlenmiştir.

0

export { functionName } from './file' gibi bir şeyi index.js dosyasında kullanabilirsiniz.

/functions/index.js
// This is the main entry point for the app written in ES that is compatible with node lts 
import * as functions from 'firebase-functions'; 

export { sendWelcomeEmail } from './userEmails'; 

exports.helloWorld = functions.https.onRequest((request, response) => { 
    let helloMsg = `Hello!`; 
    response.send(helloMsg); 
});