所以我设置了一些验证规则,例如不允许聊天中超过300个字符的邮件。
规则运行正常,但(AFAIK)firebase喜欢优化体验,导致他们执行回调,例如" child_added"在服务器告诉我们它没问题之前。
这会使消息显示在聊天中,但不会到达服务器上,使我们处于未同步状态。
有没有办法阻止回调被解雇,直到服务器说好了?
我现在看到的唯一解决方法是捕获权限被拒绝事件并再次删除该消息。然而,这将不会带来尽可能干净的体验(根本不是在聊天中添加消息,而是在消息显示之后不久)
答案 0 :(得分:1)
如果服务器端安全规则拒绝您的写入操作,Firebase客户端会触发事件以协调本地应用程序。例如:如果您添加了一个新子项(child_added
),一旦客户端知道服务器拒绝了该操作,客户端就会触发child_removed
。
只要您的应用正确处理所有child_*
个事件,就可以保持用户界面的最新状态。