繁体   English   中英

Firestore 使用 Firebase Client SDK V9 Modular with Admin 权限

[英]Firestore using Firebase Client SDK V9 Modular with Admin Privileges

以前,我所有的 firestore 查询都使用 v8 命名空间。

在我的服务器上使用Firebase Admin SDK所有交易都拥有完全权限。

我想将 v8 命名空间更新为 v9 模块化语法:

// from this
db.collection("cities").where("capital", "==", true).get();

// to this
const q = query(collection(db, "cities"), where("capital", "==", true));

使用Firebase 客户端 SDK v9 ,当我强制数据库规则true时,它会起作用,如果不这样做,我会收到错误permission-denied

import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';

const firebasev9 = initializeApp(configv9);

const db = getFirestore(firebasev9);

const q = query(collection(db, "cities"), where("capital", "==", true));

Firebase Admin SDK v10现在有类似于客户端 sdk 的模块化导出,所以我试了一下:

import { initializeApp } from 'firebase-admin/app';
import { getFirestore } from 'firebase-admin/firestore';

const firebaseAdminv9 = initializeApp(configAdminv9);

const db = getFirestore(firebaseAdminv9);

const q = query(collection(db, "cities"), where("capital", "==", true));

现在错误是Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore

似乎我们无法使用 firebase firebase-admin中的getFirestore实例。

客户端 sdk 有没有办法拥有管理员权限?

不,这是不可能的。 客户端 SDK 无法使用服务帐户初始化,这是绕过安全规则的特权访问所需的东西。 客户端 SDK 仅将当前登录的用户从 Firebase Auth 传递给授权。

此外,根本不可能混合使用客户端和管理 SDK。 尽管它们的 API 看起来很相似,但它们根本不兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM