簡體   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