firebase - 如何使用 Cloud Functions 创建新的 Firebase 实时数据库实例?
问题描述
我一直在将 firebase 用于具有 firestore 的不同类型的项目。但是,由于低并发连接和一些因素,我没有使用实时数据库。Firestore 也有一些限制,例如每个数据库每秒 10000 个。当我将 firestore 与实时数据库进行比较时,可以使用实时数据库管理许多数据库的高流量。我红色了不同的文章和堆栈溢出问题,他们提到使用云任务和云调度程序来管理 Firestore 中的写入失败。但是,我的问题是,
我可以使用云功能创建实时数据库吗?
每个项目可以创建多少个实时数据库? (我将为每个用户创建一个数据库,如果有 100 万用户 = 100 万个实时数据库)
解决方案
您可以使用Firebase 实时数据库管理 API从云函数创建新的实时数据库实例。您需要具有以下范围的访问令牌:
[
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/firebase'
]
现在最简单的方法是googleapis
在您的云功能中使用节点模块以及您的服务帐户。
const { google } = require('googleapis');
exports.createDbInstance = functions.https.onCall((data, context) => {
const auth = new google.auth.GoogleAuth({
keyFile: __dirname + '/serviceAccountKey.json',
scopes: ['https://www.googleapis.com/auth/cloud-platform']
});
const accessToken = await auth.getAccessToken()
const response = await google.firebasedatabase("v1beta")
.projects
.locations
.instances
.create({
databaseId: "new-db-id",
parent: "projects/[PROJECT-ID]/locations/[LOCATION]",
access_token: accessToken
})
console.log(response)
return {data: "New Database Created"}
});
您可以从此处下载服务帐户 JSON 文件:https ://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk
理想情况下,这不应该是没有身份验证的可调用函数。确保您实现自己的逻辑,以便只有授权的人才能调用此函数。
[PROJECT-ID]
是您要在其中创建数据库的项目的 ID。
[LOCATION]
是您要在其中创建数据库的位置。这是可用位置的列表。
推荐阅读
- swift - 如何在 Swift 中接受输入
- r - R中的ggplot:图例
- android - NsdManager 发现不适用于 Android 9
- python - Python 正则表达式 Twitter 用户名,包括 @
- python - 图像颜色变换
- php - BelongsToMany 字段未显示在创建/更新表单上
- fortran - 在 Fortran 中将变量作为语句(命令)运行?
- java - 将对象发送到控制器的问题
- javascript - amcharts 4 中的 amcharts 3 指南等价物是什么
- android - 在 BottomNavigationView (AndroidX) 中找不到资源