5

私はこれがすでにhereと尋ねられましたが、私の質問には答えません。私の質問は、onWrite呼び出しなどを含む、Cloud関数のindex.jsをどうやって分解できるかということです。Firebase組織のクラウド機能

"require"を使用して外部コードを使用することができます。それはまだindex.jsのコードを少し残しています(例えばFranks OCRの例)。

理想的には、onWriteイベントトリガー全体を別のファイルに移動できればと思っています。 index.jsで

例:

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

がどのように私は別のjsファイルへの関数全体のイベント腕時計/コールを移動し、index.jsからそれを呼び出すことができますか?

私のindex.jsはかなり大きくなりました。組織的な目的のためにそれを読むことは、苦痛となっています。

理想的には私は非常にように編成することが私のindex.jsが欲しい:

--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 
    }) 

など....

がそうのように書かれたコード(A」を持ってしなくても可能です。このラ・フランクスOCR例):事前に

var test = require('./test') 

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

おかげで....

+0

あなたは別のファイルを書き、あなたのhtmlに別のスクリプトを追加してみませんか? 。すべてのJSファイルがロードされると、他のjsファイルからすべての機能にアクセスできます –

+0

これは、サーバー上で動作するFirebaseクラウド機能であるためです。問題のインデックスファイルはサーバーに展開され、DBはトリガーイベントに使用します。 – paulyfl

答えて

7

あなたは容易に拡散することができます複数のファイルにわたって機能します。ここでは例です:マイケルの答えの変形例として

////////////// 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

いい例がありがとうございました。私は運がないとそのパターンを試みたと私は誓うことができるので、何か間違っている必要があります。私はばかな気分だ!ありがとうございました! – paulyfl

+0

@Michaelこの設定で、 'index.js'の' firebase-admin'を 'const admin = require( 'firebase-admin')'のように初期化して、 'user-cleanup.js '? adminは一度しか初期化できませんが、 'user-cleanup.js'で使用する必要があります – eyeezzi

+0

' index.js'で初期化されたファイルは 'const admin = require( 'firebase-admin')'することができますすでに初期化されています。 –

6

、私は非常にきちんとして、オブジェクト指向の種類この組織を発見しました。

// 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 
    } 
} 
関連する問題