Node.js 如何配置Firebase Admin以根据请求的环境初始化应用程序?

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

使用react本机应用程序,该应用程序有3个变体:开发、暂存和生产。我只有两个firebase项目。一个用于生产,另一个用于开发和分段

我有一个使用firebase Admin SDK的express服务器。我对配置服务器以根据请求来自的环境初始化适当的项目感兴趣。问题是,服务器在收到请求之前不知道要初始化哪个项目

我正在考虑制作一个自定义中间件,并使用从firebase配置文件导出的函数,比如

中间件:

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中托管多个函数。根据类型请求,您可以将特定用户的请求转发到具有管理功能的其他应用程序