そのため、300文字を超えるメッセージをチャットで許可しないなどの検証ルールを設定しています。
ルールは正常に機能しますが、(AFAIK)firebaseはエクスペリエンスを最適化することを好み、サーバーが問題がないことを通知する前に「child_added」などのコールバックを実行します。
これにより、メッセージはチャットに表示されますが、サーバーに到着せず、同期されていない状態になります。
サーバーがOKと言うまでコールバックが発生しないようにする方法はありますか?
私が今見ている唯一の回避策は、許可拒否イベントをキャッチし、メッセージを再度削除することです。ただし、これにより、エクスペリエンスが可能な限りクリーンになることはありません(メッセージが表示されてすぐに消える場合と比較して、チャットにメッセージがまったく追加されません)
サーバー側のセキュリティルールが書き込み操作を拒否した場合、Firebaseクライアントはイベントを発生させてローカルアプリを調整します。例:新しい子(child_added
)を追加した場合child_removed
、サーバーが操作を拒否したことがわかると、クライアントは1回起動します。
アプリがすべてのchild_*
イベントを正しく処理する限り、UIを適切に最新の状態に保つことができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加