我正在使用Firebase构建一个Web应用程序。目前我可以说我有两个阶段 - 开发,运行localhost的firebase serve
和在Firebase托管上传Web应用程序的firebase deploy --only hosting
。
一切都很好,但我不认为这是一个专业的解决方案。我看到的问题是,我的本地环境和实时Web应用程序共享同一个数据库。我对这个主题做了很多研究,我明白在Firebase上每个项目都没有办法建立两个数据库。提供的解决方案是在Firebase上创建两个项目,一个用于开发,一个用于生产。或者即使你想要,也可以用于分期。
这个解决方案对我来说似乎完全没问题。这肯定是一个好主意。几个项目,对于几个环境,单独的数据库,只是完美。然后就在实施这个解决方案之前,另一个问题在我脑海中浮现。如果我说,让我们创建一个暂存项目,为了服务我作为临时环境,我决定部署我的Web应用程序,暂存Web应用程序将公开,因此它也将被Google编入索引等等。
那么,在这种情况下你能给我什么建议?如何确保我的暂存Web应用程序(托管在临时Firebase应用程序上)不可用于其他人,并且不会被搜索引擎编入索引。我想过白名单IP或VPC,但我不知道如何以免费和可靠的方式进行。
答案 0 :(得分:3)
现在(3月2018年),Firebase允许您创建多个数据库实例。
正式文件:Scale with Multiple Databases
转到Firebase项目
在Firebase控制台中,转到Develop > Database
部分的“数据”标签。
从数据库部分(右上角)的菜单中选择Create new database
。
自定义数据库引用和安全规则,然后单击“获取它”。
(可选)修改新实例的Security rule
和Backup option
。
// Get the default database instance for an app
var database = firebase.database();
// Get a secondary database instance by URL
var database = firebase.database('https://testapp-1234.firebaseio.com');
firebase-config.js
const BUILD_LEVEL = "dev";
// const BUILD_LEVEL = 'stage'
// const BUILD_LEVEL = 'prod'
let config = {
apiKey: "your_apiKey",
authDomain: "your_authDomain",
projectId: "your_projectId",
storageBucket: "your_storageBucket",
messagingSenderId: "your_messagingSenderId"
};
if (BUILD_LEVEL === "dev") {
config.databaseURL = "https://your-project-dev.firebaseio.com/";
} else if (BUILD_LEVEL === "stage") {
config.databaseURL = "https://your-project-stage.firebaseio.com";
} else if (BUILD_LEVEL === "prod") {
config.databaseURL = "https://your-project-dev.firebaseio.com";
}
firebase.initializeApp(config);
现在要更改Firebase数据库实例,您只需要更改BUILD_LEVEL
变量。
将此功能与Git/Github/Gitlab workflow
,Git hook
,webpack
,CI/CD tool
相结合,您就拥有了非常灵活的解决方案。
答案 1 :(得分:0)
万一有人有这个问题,Firebase博客上会有一个article。
注意:此Firebase文章假定您已经为此新环境(即project-dev)创建了第二个Firebase项目,并将配置详细信息复制到了您的工作环境(即project-dev)中。 Master和dev是两个不同的环境,因此具有两个不同的Firebase配置是很有意义的。
文章指出:
对我们来说幸运的是,Firebase CLI使设置和部署到多个环境变得简单。
使用Firebase CLI在环境之间添加和切换的方法如下 只需一个命令即可:
firebase use
。
$ firebase use --add
此命令提示您从现有项目之一中进行选择选择要用于其他环境的项目,然后为其命名。别名确实可以是您想要的任何名称,但是通常使用别名,例如“开发”,“临时”或“生产”。
创建新别名后,它将被设置为当前别名 部署环境。运行Firebase部署将部署您的 该应用程序。
切换环境
如果要切换到其他环境,只需在use命令中提供别名即可。
$ firebase use default
#将环境设置为默认别名
$ firebase use staging
#将环境设置为暂存别名对于单个命令,还可以使用
-P
标志指定环境:
$ firebase deploy -P staging
#部署到暂存别名
希望有帮助!