@jasonsirota 的回答非常有帮助。但是查看更详细的代码可能会很有用,尤其是在 HTTP 触发函数的情况下。
使用与@jasonsirota 的回答相同的结构,假设您希望在两个不同的文件中拥有两个单独的 HTTP 触发器函数:
目录结构:
/functions
|--index.js
|--foo.js
|--bar.js
|--package.json
索引.js:
'use strict';
const fooFunction = require('./foo');
const barFunction = require('./bar');
// Note do below initialization tasks in index.js and
// NOT in child functions:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const database = admin.database();
// Pass database to child functions so they have access to it
exports.fooFunction = functions.https.onRequest((req, res) => {
fooFunction.handler(req, res, database);
});
exports.barFunction = functions.https.onRequest((req, res) => {
barFunction.handler(req, res, database);
});
foo.js:
exports.handler = function(req, res, database) {
// Use database to declare databaseRefs:
usersRef = database.ref('users');
...
res.send('foo ran successfully');
}
酒吧.js:
exports.handler = function(req, res, database) {
// Use database to declare databaseRefs:
usersRef = database.ref('users');
...
res.send('bar ran successfully');
}