首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置Firebase Admin根据请求的环境初始化app?

如何配置Firebase Admin根据请求的环境初始化app?
EN

Stack Overflow用户
提问于 2021-04-27 07:36:44
回答 1查看 208关注 0票数 0

在react原生应用程序上工作,该应用程序有3个变体:开发、试运行和生产。我只有两个firebase项目。一个用于生产,另一个用于开发和试运行

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

我正在考虑制作一个自定义的中间件,并使用从firebase配置文件中导出的函数,可能类似于...

中间件:

代码语言:javascript
复制
const {initAdminByEnvironment} = require('./config')

module.exports = function(req, res, next) {
  const requestorEnvironment = req.header('Requesting-Environment')

  initAdminByEnvironment(requestorEnvironment)

  next()
}

配置:

代码语言:javascript
复制
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‘时,访问适当的配置。有没有更好的方法来实现这一点,根据请求环境确定管理员配置?

EN

回答 1

Stack Overflow用户

发布于 2021-04-30 02:02:48

我只需要两个环境-本地环境和生产环境。为此,我使用了“process.env.FUNCTIONS_EMULATOR”,如下所示:

代码语言:javascript
复制
let environment = "development";
if (process.env.FUNCTIONS_EMULATOR !== true &&
  process.env.FUNCTIONS_EMULATOR.toLowerCase() !== "true") {
  environment = "production";
}

既然你有一个请求对象,我想你可以通过域名来检查。

此外,您可能想要检查Node文件是否会在应用程序在firebase-functions中更新后被缓存(或者每次请求都初始化它们)。如果您动态读取配置文件,而不是顶级的require函数,则会更好。

您还可以检查是否可以选择在firebase中托管多个函数。根据类型请求,您可以将特定用户的请求转发到另一个具有管理功能的应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67275073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档