首页 > 解决方案 > 如何使用 Cloud Functions 创建新的 Firebase 实时数据库实例?

问题描述

我一直在将 firebase 用于具有 firestore 的不同类型的项目。但是,由于低并发连接和一些因素,我没有使用实时数据库。Firestore 也有一些限制,例如每个数据库每秒 10000 个。当我将 firestore 与实时数据库进行比较时,可以使用实时数据库管理许多数据库的高流量。我红色了不同的文章和堆栈溢出问题,他们提到使用云任务和云调度程序来管理 Firestore 中的写入失败。但是,我的问题是,

我可以使用云功能创建实时数据库吗?

每个项目可以创建多少个实时数据库?我将为每个用户创建一个数据库,如果有 100 万用户 = 100 万个实时数据库

标签: firebasefirebase-realtime-database

解决方案


您可以使用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]是您要在其中创建数据库的位置。是可用位置的列表。


推荐阅读