繁体   English   中英

适用于Firebase组织的云功能

[英]Cloud Functions for Firebase organization

我知道这已经在这里被问到 ,但它没有回答我的问题。 我的问题是我们如何分解云函数的index.js,包括onWrite调用等。

我意识到你可以使用“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已经变得非常大,为组织目的阅读它已经变成了PAIN。

理想情况下,我希望我的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
   })

等等....

这是可能的,而不必像这样编写代码('la Franks OCR示例):

var test = require('./test')

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

提前致谢....

您可以轻松地将功能分布在多个文件中。 这是一个例子:

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

作为迈克尔答案的变体,我发现这个组织非常整洁,面向对象。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM