如何使用nodejs SDK为Google Firestore集合数据创建REST API



我需要为谷歌Firestore数据的crud操作创建REST API。

API1:列出集合文档或阅读特定文档

API2:在集合下创建新文档

API3:更新文档

API4:删除文档

多个应用将共享同一个 Firestore 项目。

  • 基本集合名称:我的公司
  • 子文档:我的应用1
  • 子集合名称:错误消息
  • 子文档: {"错误":"未经授权"}

Firestore 数据如下所示:

  • MyCompany.MyApp1.ErrorMessage
  • MyCompany.MyApp2.ReferalCodes
  • MyCompany.MyApp3.AnotherCollection

所有应用应共享同一个 firestore 实例,但只能访问其各自的集合。

我计划在标头("appidentifier": "MyApp1") 中添加一个请求参数,以确定请求来自哪个应用程序。

要求(通过 API 调用):

  1. 一个应用不应访问其他应用的集合/数据
  2. 需要限制权限,例如 App1 只能读取数据,App2 可以同时进行读取和写入。

查询/问题:

  1. 哪个节点模块适合此(Firebase-admin或Firebase或@google-cloud/firestore)
  2. 我们是否需要创建和管理多个 Firestore 客户端实例?(管理员或客户端实例)?
  3. 给出一些关于我们如何管理规则和 firestore 客户端实例的设计。

在此处发布解决方案:

  1. 使用 firebase-admin npm 创建 firestore admin 实例

    let adminInst = return await admin.initializeApp({ 凭据: admin.credential.cert() }, 'admininstance1');

  2. 使用"uuid"生成自定义令牌:App1

    await adminInst.auth().createCustomToken('App1') .then(function (customToken) { console.log(自定义令牌); }).catch(async (error) => { });

  3. 使用 适用于 App1 的"firebase"npm 创建客户端实例,并使用自定义令牌进行身份验证(步骤 2)

    let clientInst = await firebase.initializeApp(, 'App1');

  4. 使用"uuid"生成自定义令牌:应用2

  5. 使用 适用于 App2 的"firebase"npm 创建客户端实例,并使用自定义令牌进行身份验证(步骤 4)

最新更新