Node.js 如何配置Firebase Admin以根据请求的环境初始化应用程序?
使用react本机应用程序,该应用程序有3个变体:开发、暂存和生产。我只有两个firebase项目。一个用于生产,另一个用于开发和分段 我有一个使用firebase Admin SDK的express服务器。我对配置服务器以根据请求来自的环境初始化适当的项目感兴趣。问题是,服务器在收到请求之前不知道要初始化哪个项目 我正在考虑制作一个自定义中间件,并使用从firebase配置文件导出的函数,比如 中间件:Node.js 如何配置Firebase Admin以根据请求的环境初始化应用程序?,node.js,firebase,express,firebase-admin,Node.js,Firebase,Express,Firebase Admin,使用react本机应用程序,该应用程序有3个变体:开发、暂存和生产。我只有两个firebase项目。一个用于生产,另一个用于开发和分段 我有一个使用firebase Admin SDK的express服务器。我对配置服务器以根据请求来自的环境初始化适当的项目感兴趣。问题是,服务器在收到请求之前不知道要初始化哪个项目 我正在考虑制作一个自定义中间件,并使用从firebase配置文件导出的函数,比如 中间件: const {initAdminByEnvironment} = require('./c
const {initAdminByEnvironment} = require('./config')
module.exports = function(req, res, next) {
const requestorEnvironment = req.header('Requesting-Environment')
initAdminByEnvironment(requestorEnvironment)
next()
}
配置:
const admin = require('firebase-admin');
console.log("projectId: " + process.env.PROJECT_ID);
function initAdminByEnvironment(env) {
if (env == 'production') {
// init prod config
} else {
// init dev/staging config
}
}
module.exports = {admin: admin, initAdminByEnvironment: initAdminByEnvironment }
我猜这将迫使管理员初始化首先通过中间件,然后当其他路由需要“admin”时,访问正确的配置。有没有更好的方法来实现这一点,根据请求的环境确定管理配置?我只需要两个环境—本地环境和生产环境。为此,我使用了“process.env.FUNCTIONS\u EMULATOR”,如下所示:
let environment = "development";
if (process.env.FUNCTIONS_EMULATOR !== true &&
process.env.FUNCTIONS_EMULATOR.toLowerCase() !== "true") {
environment = "production";
}
既然您有一个请求对象,我想您可以通过域名进行检查
此外,您可能需要检查应用程序在firebase函数中更新后是否会缓存节点文件(或者每次请求时是否都对其进行初始化)。如果动态读取配置文件而不是顶级require函数,效果会更好
您还可以检查是否可以在firebase中托管多个函数。根据类型请求,您可以将特定用户的请求转发到具有管理功能的其他应用程序