我需要为谷歌Firestore数据的crud操作创建REST API。
API1:列出集合文档或阅读特定文档
API2:在集合下创建新文档
API3:更新文档
API4:删除文档
多个应用将共享同一个 Firestore 项目。
- 基本集合名称:我的公司
- 子文档:我的应用1
- 子集合名称:错误消息
- 子文档: {"错误":"未经授权"}
Firestore 数据如下所示:
- MyCompany.MyApp1.ErrorMessage
- MyCompany.MyApp2.ReferalCodes
- MyCompany.MyApp3.AnotherCollection
所有应用应共享同一个 firestore 实例,但只能访问其各自的集合。
我计划在标头("appidentifier": "MyApp1") 中添加一个请求参数,以确定请求来自哪个应用程序。
要求(通过 API 调用):
- 一个应用不应访问其他应用的集合/数据
- 需要限制权限,例如 App1 只能读取数据,App2 可以同时进行读取和写入。
查询/问题:
- 哪个节点模块适合此(Firebase-admin或Firebase或@google-cloud/firestore)
- 我们是否需要创建和管理多个 Firestore 客户端实例?(管理员或客户端实例)?
- 给出一些关于我们如何管理规则和 firestore 客户端实例的设计。
在此处发布解决方案:
-
使用 firebase-admin npm 创建 firestore admin 实例
let adminInst = return await admin.initializeApp({ 凭据: admin.credential.cert() }, 'admininstance1');
-
使用"uuid"生成自定义令牌:App1
await adminInst.auth().createCustomToken('App1') .then(function (customToken) { console.log(自定义令牌); }).catch(async (error) => { });
-
使用 适用于 App1 的"firebase"npm 创建客户端实例,并使用自定义令牌进行身份验证(步骤 2)
let clientInst = await firebase.initializeApp(, 'App1');
-
使用"uuid"生成自定义令牌:应用2
- 使用 适用于 App2 的"firebase"npm 创建客户端实例,并使用自定义令牌进行身份验证(步骤 4)