首页 > 解决方案 > 如何使用 nodejs SDK 为 google firestore 收集数据创建 REST API

问题描述

我需要为 google firestore 数据上的 crud 操作创建 REST API。

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

API2:在集合下新建文档

API3:更新文档

API4:删除文档

多个应用程序将共享同一个 firestore 项目。

Firestore 数据如下所示:

所有应用程序都应该共享同一个 firestore 实例,但只能访问它们各自的集合。

我打算在 header("appidentifier": "MyApp1") 中添加一个请求参数,以识别请求来自哪个应用程序。

要求(通过 API 调用):

  1. 一个应用程序不应访问其他应用程序的集合/数据
  2. 需要限制权限,比如app1只能读取数据,app2可以读写。

查询/问题:

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

标签: node.jsrestgoogle-cloud-firestorefirebase-adminfirebase-security

解决方案


在此处发布解决方案:

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

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

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

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

  3. 使用“firebase”npm 为 App1 创建客户端实例并使用自定义令牌进行身份验证(步骤 2)

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

  4. 使用“uuid”生成自定义令牌:App2

  5. 使用“firebase”npm 为 App2 创建客户端实例并使用自定义令牌进行身份验证(步骤 4)

推荐阅读