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


Answers

Question

我已閱讀關於構建數據的Firebase文檔。 數據存儲便宜,但用戶的時間不是。 我們應該優化獲取操作,並寫在多個地方。

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

我使用ES6和承諾在我的JavaScript應用程序來處理異步流程,主要是在第一次數據推送後從Firebase中獲取ref key。

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,並在解決之前關閉了瀏覽器,實際上我的數據庫不再一致, 沒有相應的列表就保存額外的索引

有什麼建議?