gpt4 book ai didi

swift - 如何使用 FireStore 和云功能创建开发环境

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:06 25 4
gpt4 key购买 nike

我一直在广泛使用 FireStore 和 Cloud Functions,到目前为止一切都很好。

随着我的 Swift 应用程序即将正式发布,我想构建一个单独的开发环境。根据文档,我能够:

  • 创建两个独立的项目
  • 使用各种 GoogleService p-list 将这两个项目链接到我的 2 个目标
  • 我还能够为我的 Firebase Function 环境声明 2 个服务帐户并创建两个单独的别名。

这一切似乎都有效,除了我的新 Dev Cloud Function 环境没有与我的 Dev FireStore DB 完全链接,而是看起来仍然链接到我的初始 FireStore DB 实例——当我在上面写东西时,云函数被正确触发,但所有数据检索函数都返回空(就好像 .get() 命令以我的“旧”产品数据库为目标)。

您能告诉我如何“强制”我的 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();

再次感谢,弗朗索瓦

最佳答案

更新根据下面的评论和对您的帖子的更新,其中包含您初始化应用程序的云功能代码部分:

通过执行以下操作:

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

即:

If you need to initialize the Admin SDK with the default project configuration using service account credentials, you can load the credentials from a file and add them to FIREBASE_CONFIG like this:

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(s) 的目标项目。这是为了防止您登录的用户正在管理这两个项目(开发和生产)。

如果两个不同的用户管理这两个项目,您必须使用 logout 命令,然后使用 login 命令,以便使用正确的用户登录(并且可能如果用户管理多个项目,则随后使用 use 命令。

请参阅此处的文档:https://firebase.google.com/docs/cli/#administrative_commands

关于swift - 如何使用 FireStore 和云功能创建开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com