[javascript] 如何在Firebase中編寫非規範化數據



Answers

為了向Franks添加很好的回复,我使用一組Firebase雲功能實現了最終的一致性方法。 只要主值(例如用戶名)發生更改,就會觸發函數,然後將更改傳播到非規範化字段。

它沒有交易那麼快,但在許多情況下它並不需要。

Question

我已閱讀有關Stucturing Data的Firebase文檔。 數據存儲很便宜,但用戶的時間不是。 我們應該優化get操作,並在多個地方寫。

那麼我可能會存儲一個列表節點和一個列表索引節點,兩者之間有一些重複的數據,至少是列表名稱。

我正在使用ES6並在我的javascript應用程序中承諾處理異步流,主要是在第一次數據推送後從firebase獲取ref密鑰。

let addIndexPromise = new Promise( (resolve, reject) => {
    let newRef = ref.child('list-index').push(newItem);
    resolve( newRef.key()); // ignore reject() for brevity
});
addIndexPromise.then( key => {
   ref.child('list').child(key).set(newItem);
 });

我知道我的應用程序只在客戶端上運行,如何確保數據在所有位置保持同步

為了進行健全性檢查,我在我的承諾中設置了一個setTimeout,並在解決之前關閉了我的瀏覽器,確實我的數據庫不再一致, 保存了一個沒有相應列表額外索引

任何建議?




Links