node.js - 如何使用 nodejs SDK 为 google firestore 收集数据创建 REST API
问题描述
我需要为 google firestore 数据上的 crud 操作创建 REST API。
API1:列出集合文档或读取特定文档
API2:在集合下新建文档
API3:更新文档
API4:删除文档
多个应用程序将共享同一个 firestore 项目。
- 基础集合名称:MyCompany
- 子文档:MyApp1
- 子集合名称:ErrorMessage
- 子文档:{"error":"Unauthorized"}
Firestore 数据如下所示:
- MyCompany.MyApp1.ErrorMessage
- MyCompany.MyApp2.ReferalCodes
- MyCompany.MyApp3.AnotherCollection
所有应用程序都应该共享同一个 firestore 实例,但只能访问它们各自的集合。
我打算在 header("appidentifier": "MyApp1") 中添加一个请求参数,以识别请求来自哪个应用程序。
要求(通过 API 调用):
- 一个应用程序不应访问其他应用程序的集合/数据
- 需要限制权限,比如app1只能读取数据,app2可以读写。
查询/问题:
- 哪个节点模块适合这个(firebase-admin 或 firebase 或 @google-cloud/firestore)
- 我们是否需要创建和管理多个 Firestore 客户端实例?(管理员或客户端实例)?
- 给出一些我们如何管理规则和firestore客户端实例的设计..
解决方案
在此处发布解决方案:
使用 firebase-admin npm 创建 firestore 管理实例
让 adminInst = return await admin.initializeApp({ credential: admin.credential.cert() }, 'admininstance1');
使用“uuid”生成自定义令牌:App1
await adminInst.auth().createCustomToken('App1') .then(function (customToken) { console.log(customToken); }).catch(async (error) => { });
使用“firebase”npm 为 App1 创建客户端实例并使用自定义令牌进行身份验证(步骤 2)
让 clientInst = await firebase.initializeApp(, 'App1');
使用“uuid”生成自定义令牌:App2
- 使用“firebase”npm 为 App2 创建客户端实例并使用自定义令牌进行身份验证(步骤 4)
推荐阅读
- microsoft-dynamics - Microsoft Dynamics 2013 和 Microsoft Dynamics 365 使用相同的 Rest API?
- java - 正则表达式在嵌套引号的情况下选择内引号之间的所有文本
- c# - SearchQuery by Not in Uids MailKit
- amazon-web-services - 无法为 AWS Route 53 上的子域创建 CAA 记录
- angular - Angular 6 HttpClient 响应返回未定义
- html - @font-face 不会在 WordPress 中显示自定义字体
- java - Set 方法在扩展类中找不到符号?
- java - 通过 SharedPreference 更新 ImageView 重新创建活动?
- javascript - 单选按钮选中/取消选中基于另一个单选组选中/取消选中
- php - 有效地从字符串中删除所有数组值,如果数组值是字符串中单词的一部分,则整个单词也必须从字符串中删除