5

Bu sorunun zaten here sorulu olduğunu biliyorum, ancak bu soruya cevap vermiyor. Sorum şu: onWrite çağrıları ve benzeri gibi Cloud Fonksiyonları için index.js'yi nasıl kırabiliriz.Firebase kuruluşu için Bulut İşlevleri

"Gereksinim" seçeneğini kullanabilir ve dış kodu getirebilirsiniz. Dizin.js'de hala biraz kod (örneğin Franks OCR örneğinde) bırakır.

İdeal olarak tüm onWrite olay tetikleyicisini başka bir dosyaya taşıyabilmek isterim. index.js içinde

ÖRNEK:

exports.sysQueueUserNew = functions.database.ref("/sys/queue/user_new/{queueId}").onWrite((event) => { 
     // do something 
}) 

tamamını nasıl işlev olay izlemek taşıyabilirsiniz/başka js dosyasına arama ve index.js gelen diyoruz?

Benim index.js'im oldukça büyüdü ve bunu kurumsal amaçlar için okumak bir PAIN oldu.

İdeal benim index.js istiyorum çok gibi organize edilecek: şöyle yazılı kod gerek kalmadan

bu mümkün mü

--in index.js -- 
    /// User cleanup 
    userHelpers()  

    /// SYS Logs 
    sysLogs() 

--and in userHelpers.js have the onWrite trigger for example--- 
    functions.database.ref("/sys/queue/user_new/{queueId}").onWrite((event) => { 
     // create user 
    }) 

vs .... (a' la Franks OCR örnek): önceden

var test = require('./test') 

exports.sysQueueUserNew = functions.database.ref("/sys/queue/user_new/{queueId}").onWrite((event) => { 
     // do something 
     test.doCleanup() 
}) 

Teşekkür ....

+0

Neden başka bir dosya yazıp html dosyanıza başka bir komut dosyası eklemiyorsunuz? . Tüm JS dosyaları yüklendikten sonra, her işleve, diğer js dosyasından erişilebilir. –

+0

Bunlar, sunucularında çalışan Firebase bulut işlevleridir. Söz konusu dizin dosyası sunucularına dağıtılır ve DB bunu tetikleyici olaylar için kullanır. – paulyfl

cevap

7

kolayca yayılabilir senin Birden çok dosya arasında işlev görür. İşte bir örnek: Michael cevabın bir çeşidi olarak

////////////// index.js 

exports.sysQueueUserNew = require('./sys-queue-user-new'); 
exports.userCleanup = require('./user-cleanup'); 

///////////// sys-queue-user-new.js 

const functions = require('firebase-functions'); 

module.exports = functions.database 
    .ref("/sys/queue/user_new/{queueId}") 
    .onWrite(e => { 
    // do something 
    }); 

///////////// user-cleanup.js 

const functions = require('firebase-functions'); 

module.exports = functions.auth.user().onDelete(e => { 
    // do something 
}); 
+0

Güzel bir örnek için çok teşekkür ederim. Yanlış bir şey yapmalıydım, çünkü yemin edebilirim ki, şansı olmayan bu deseni denedim. Kendimi aptal gibi hissediyorum! Teşekkür ederim! – paulyfl

+0

@Michael, Bu kurulum ile, 'const.js = require (' firebase-admin ') 'gibi' index.js' içinde firebase-admin'i başlattığınızı varsayalım,' user-cleanup.js'ye nasıl iletirsiniz? '? Yönetici yalnızca bir kez başlatılabildiğinden, ancak 'user-cleanup.js' – eyeezzi

+0

' da kullanmanız gerektiğinden, 'index.js'de başlatıldığında sadece const admin = require (' firebase-admin ') 'dır. ve zaten başlatılacak. –

6

, çok düzgün ve nesnenin odaklı tür bu organizasyona bulundu.

// index.js 
const admin = require('firebase-admin') 
admin.initializeApp(functions.config().firebase) 

const user = require('./user')(admin) 
exports.sendWelcomeEmail = user.sendWelcomeEmail 

// user.js 
const functions = require('firebase-functions') 

module.exports = function(admin) { 

    let sendWelcomeEmail = functions.auth.user().onCreate(event => { 
     // return admin.database().ref().update({}) 
    }) 

    return { 
     sendWelcomeEmail: sendWelcomeEmail 
    } 
} 
İlgili konular