2 回答

TA貢獻1816條經驗 獲得超4個贊
從您上面的評論來看,您似乎想編寫(更新)該classrooms集合的文檔。更準確地說,更新accessMap 類型的字段(有關 Firestore 類型,請參閱文檔)。
因此,當您更新此文檔并獲取access您將調用的地圖的值時,您的云函數將被簡單地觸發snap.data().access。
exports.createAccessDetails = functions.firestore.document('classrooms/{classId}').onWrite((snap, context) => {
const data = snap.data();
const accessMap = snap.data().access;
const writeAccessMap = accessMap.writeAccess
//........
return null;
});
更新以下您的評論:
我沒有全面了解您的確切業務需求(特別是我看到您提到了 writeAccess 和 readAccess),但您可能有以下方法:
對于每個classroom文檔,您創建兩個子集合:writeAccess和readAccess. 每次您想要保存訪問權限時,您都會在這些集合之一中編寫一個新文檔。
然后,您可以查詢子集合以查找給定 ID 具有讀或寫訪問權限的文檔。然后從這些查詢返回的 QueryDocumentSnapshot 中,您可以找到父文檔(通過ref屬性)。
然而,這意味著你將有一個額外讀來從查詢到的結果課堂細節writeAccess和readAccess收藏。

TA貢獻1808條經驗 獲得超4個贊
更新操作不會觸發云函數。因為您為名為 access 的子集合編寫了觸發器函數,并且您正在對名為classroom 的根集合進行更新。所以上面編寫的觸發器函數只會為名為 access 的子集合觸發,而不是對于名為classroom的根集合。希望這對您有所幫助
添加回答
舉報