2012-06-25 70 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