2012-06-25 35 views
0

我正在研究一種解決方案,以攔截來自我們的node.js服務器的數據更改,並在它們存儲/同步到其他客戶端之前驗證/更改它們。攔截數據更改並從服務器更改/驗證

關於如何用當前代碼庫解決此問題的任何策略或建議?

目前,它似乎是唯一的選擇是重寫它的後同步操作。這意味着每個客戶端可能會收到同步(包括服務器),然後服務器會重寫數據並觸發第二次同步。

爲了幫助理解問題的背景下,這裏就是好像我需要一個理想的策略:

  • 服務器獲取不提供給客戶一個特殊的記號/鍵(安時談到有關)
  • 服務器註冊依賴注入等firebase.child('widgets').beforeSync(myCallback)
  • 客戶端同步數據
  • 服務器回調通知
  • 服務器修改或驗證數據
  • 如果有效,它返回它火力的同步OPS
  • 如果無效,將中止同步與被返回給客戶端的錯誤

回答

1

感謝您分享您的想法!

我們已經考慮過這種方法。實際上,您可以通過構建數據來模擬這種行爲,以便有一個「未驗證」樹和一個「已驗證」樹。

「未驗證」樹可由客戶端寫入,服務器將監視它的更改。發生更改時會驗證數據,如果通過,則會將其複製到只能由服務器寫入的「已驗證」樹中。當驗證失敗時,您可以通過Firebase數據將錯誤傳回客戶端。

此行爲可以打包到提供您描述的行爲的庫中。我們也可以將此添加爲核心功能,但我們仍在研究各種選項。

+0

Andrew,謝謝您花時間回覆。我很樂意爲此開發一個圖書館,作爲第三方或核心組件。 (ps你應該爲即將發佈的功能考慮[類似這樣的事情](https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c)) – Kato

+0

如果你想開源的驗證部分,現在重新建設我相信很多其他人會讚賞它,我們會隨着時間的推移幫助項目順利進行。否則,請在Twitter上關注我們(我們是@Firebase),當我們有一些解決方案時,我們會發布推文。 感謝您關於Trello的提示。我們其中一位傢伙實際上曾經在Fog Creek工作過:)我們已經收到了很多這方面的要求,並且會提供一些方法讓社區瞭解我們的路線圖。 –

+0

或者也許和解析一樣,讓我們​​在服務器端的js/lua中編碼? – mamcx