I know this was already asked here, BUT it does not answer my question. My question is how can we break apart index.js for Cloud Functions including the onWrite calls and such.
I realize you can use "require" and bring in outside code. It still leaves a bit of code ( in Franks OCR example, for example) , in index.js.
Ideally I'd love to be able to move an entire onWrite event trigger to another file.
EXAMPLE in index.js:
exports.sysQueueUserNew = functions.database.ref("/sys/queue/user_new/{queueId}").onWrite((event) => {
// do something
})
How can I move the entire function event watch/call to another js file, and call it from index.js?
My index.js has grown quite large, and reading it for organizational purposes has become a PAIN.
Ideally I'd like my index.js to be very organized such as:
--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
})
etc....
Is this possible without having to have code written like so (a' la Franks OCR example):
var test = require('./test')
exports.sysQueueUserNew = functions.database.ref("/sys/queue/user_new/{queueId}").onWrite((event) => {
// do something
test.doCleanup()
})
Thanks in advance....
You can easily spread your functions across multiple files. Here's an example:
////////////// 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
});
As a variant of Michael's answer, I found this organization very neat and kind of object-oriented.
// 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
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With