在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‘时,访问适当的配置。有没有更好的方法来实现这一点,根据请求环境确定管理员配置?
发布于 2021-04-30 02:02:48
我只需要两个环境-本地环境和生产环境。为此,我使用了“process.env.FUNCTIONS_EMULATOR”,如下所示:
let environment = "development";
if (process.env.FUNCTIONS_EMULATOR !== true &&
process.env.FUNCTIONS_EMULATOR.toLowerCase() !== "true") {
environment = "production";
}既然你有一个请求对象,我想你可以通过域名来检查。
此外,您可能想要检查Node文件是否会在应用程序在firebase-functions中更新后被缓存(或者每次请求都初始化它们)。如果您动态读取配置文件,而不是顶级的require函数,则会更好。
您还可以检查是否可以选择在firebase中托管多个函数。根据类型请求,您可以将特定用户的请求转发到另一个具有管理功能的应用程序。
https://stackoverflow.com/questions/67275073
复制相似问题