我使用 Firebase 作為 Flutter 專案的后端。我需要在一個事務中寫入多個節點。我現在有:
await (_firebaseDatabase
.reference()
.child('user_data').Push().set({"userName":"aaa"}));
await (_firebaseDatabase
.reference()
.child('user_history').Push().set({"userName":"aaa"}));
但是這些是 2 transactions,所以 1 可以成功結束,但另一個可能會失敗,我想防止發生這種情況。
另一種情況是寫入user_data并更新到user_history. 我們如何在 Firebase 實時資料庫中實作這一點?
基本上,我想在單個事務中的 2 個不同節點上進行插入和更新,以免資料不匹配。
uj5u.com熱心網友回復:
您正在尋找的稱為多路徑寫入操作,它允許您通過一次update呼叫寫入多個不重疊的路徑。您可以為每個鍵指定要更新的整個路徑,然后資料庫將設定您在該特定路徑上指定的值。
要生成兩個單獨的唯一鍵,您可以push()不帶任何引數呼叫兩次。當這樣呼叫時,它實際上并沒有寫入資料庫,而只是在客戶端生成一個唯一的參考,然后您就可以從中獲取密鑰。
結合起來,它看起來像這樣:
const db = _firebaseDatabase.reference();
const key1 = db.push().key;
const key2 = db.push().key;
const values = {};
values["user_data/" key1 "/username"] = "aaa";
values["user_history/" key2 "/username"] = "aaa";
db.update(values);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329011.html
