我需要创建一个云函数,它将访问运行在另一个项目中的Firebase DB。如果它正在访问当前项目中的db,我可以使用以下代码
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);但是,我希望functions.config().firebase返回其他项目的信息(最重要的是返回凭据)。有什么简单的方法吗?
发布于 2017-05-12 17:24:57
functions.config().firebase是一个保留的命名空间,您将无法覆盖它。但是,您可以自己进行跨项目初始化。我会这样做:
首先,将另一个项目的下载服务帐户放到functions目录中。叫它<project_id>-sa.json。接下来,设置一些环境配置(app.other_project_id只是一个示例名称,而不是一个要求):
firebase functions:config:set app.other_project_id="<the_project_id>"现在,在代码中,您可以初始化Admin,如下所示:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
if (!functions.config().app || !functions.config().app.other_project_id) {
throw new Error('Cannot start app without app.other_project_id config.');
}
const FB_PROJECT_ID = functions.config().app.other_project_id;
const SERVICE_ACCOUNT = require(`./${FB_PROJECT_ID}-sa.json`);
admin.initializeApp({
databaseURL: `https://${FB_PROJECT_ID}.firebaseio.com`,
credential: admin.credential.cert(SERVICE_ACCOUNT)
});这将初始化另一个项目的Admin。
发布于 2020-05-23 10:25:31
而不是
if (!functions.config().app || !functions.config().app.project_id) {你应该用
if (!functions.config().app || !functions.config().app.fb_project_id) {注意: project_id中的错误
https://stackoverflow.com/questions/43939932
复制相似问题