現在チャット アプリを構築しているのですが、Firebase ルールで問題が発生しています。ユーザーが参加していない会話を閲覧できないようにしたいと考えています。ただし、これらのルールを実装しようとすると、会話が存在するかどうかを確認した後でもアクセスが拒否されるようです。ユーザーがデータベース内のすべての会話ではなく、自分が参加している会話のみを表示できるように Firebase ルールを適切に構成するにはどうすればよいですか?
これは、会話のみに実装しようとしているルールセットです。
リーリーアクセスは「トップレベル」で拒否されました。これは次の部分です:
リーリーこれは、これらの入れ子になった会話の仕組みに関係があると思いますが、何を変更する必要があるのかわかりません。 Google Firebaseのドキュメントでこれについて読んでみましたが、これに関連するものは見つかりませんでした。 これを修正する方法があれば、ぜひお知らせください。ありがとう!
複数の「ルールセット」で動作させることを試してみました。常にexists()関数で失敗します。
これも試してみましたが、どちらもうまくいかないようです:
リーリーこれは私が Vue.js で使用するクエリです:
ああああ
この失敗の原因となった実行中のクエリを共有していませんが、 Firestore ルールはフィルターではないことを覚えておくことが重要です 。
クエリが次のような場合:
リーリーFirestore がルールが
ルールを評価させるために実行するクエリが、ルールが true と評価される会話のみを参照することを確認する必要があります。例:true
と評価された会話のみを返すことを期待している場合、これは機能しません。 Firestore は、 一部の 会話ドキュメント が trueと評価されず、
クエリ全体が失敗することを検出します 。リーリー
公式のFirestore ルール ドキュメント .中了解更多信息> を確認できます。