我一直在广泛使用FireStore和云功能,到目前为止一切都很棒。
当我的Swift应用程序接近生产启动时,我想构建一个单独的开发环境。根据我能够的文件:
这一切似乎都有效,除了我的新Dev Cloud Function环境没有与我的Dev FireStore数据库完全链接,但仍然显示仍链接到我的初始FireStore数据库实例 - 当我在其上写东西时,云功能被正确触发,但是所有的数据检索功能都返回空(就像.get()命令一样,我的" old" prod DB)。
你能不能让我知道我怎么能强迫"强迫"我的Dev Cloud Functions环境与我的Dev FireStore数据库实例链接?我一定错过了一步 - 例如,我没有重新初始化CLI /重新登录等,但只创建了第二个别名。
我也收到此消息:"未配置结算帐户。外部网络无法访问,配额严重受限。配置结算帐户以删除这些限制"。这很奇怪,因为我没有使用外部帐户(仅限Firestore / Cloud Functions / FCM)。
您可以指出的任何文档/分步指南都非常有用!
以下是我初始化2个应用的方法:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
var serviceAccount = require("./adminKey.json");
var serviceAccountDev = require("./adminKey-dev.json");
var secondEnvironment = admin.initializeApp({
credential: admin.credential.cert(serviceAccountDev),
databaseURL: "https://<app name>-dev.firebaseio.com"
}, 'dev instance');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<app name>.firebaseio.com"
});
var db = admin.firestore();
再次感谢, 弗朗索瓦
答案 0 :(得分:0)
更新根据以下评论以及您对帖子的更新,其中包含您初始化应用的云功能代码部分:
通过执行以下操作:
var secondEnvironment = admin.initializeApp({
credential: admin.credential.cert(serviceAccountDev),
databaseURL: "https://<app name>-dev.firebaseio.com"
}, 'dev instance');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<app name>.firebaseio.com"
});
您正在使用适用于两种环境的Prod环境参数初始化应用。
您应该按照本文档项目底部的说明进行操作:https://firebase.google.com/docs/functions/config-env#automatically_populated_environment_variables
是:
如果您需要使用服务帐户凭据使用默认项目配置初始化Admin SDK,您可以从文件加载凭据并将其添加到FIREBASE_CONFIG,如下所示:
serviceAccount = require('./serviceAccount.json');
const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);
process.env.FIREBASE_CONFIG
是一个在函数运行时自动填充的环境变量。
(初步答复,与你的确切问题不完全相关......)
如果我理解得很清楚,您只需在CLI中使用use
命令切换到要为其部署Cloud Function的目标Project。这是因为您登录的用户正在管理两个项目(dev和prod)。
如果两个不同的用户管理这两个项目,您必须使用logout
命令后跟login
命令才能使用正确的用户登录(并可能随后使用{{1如果用户管理多个项目,则命令。)
请参阅此处的文档:https://firebase.google.com/docs/cli/#administrative_commands