Firebase CloudFirestoreで条件にあっているのにERROR Error: Missing or insufficient permissions.が起こるとき

こんにちは。レモンティーです。

今回はFirebaseのCloudFirestoreのルールについてです。
普通に公式ドキュメントに書いてあるのに見落としていたことなので多くの人には問題ないかもしれません。

ちょうどここに書いてあります。
https://firebase.google.com/docs/firestore/security/rules-query?authuser=0


例えば

allow read :if request.auth.uid == resource.data.author;

のようなルールできちんとルールを満たしているのに
ERROR Error: Missing or insufficient permissions.
が起こる場合は、クエリ側で

.where("author","==",user.uid)

のようにし忘れている可能性があります。


これを書き加えた時、インデックスを追加してくださいという旨の
リンク付きエラーがでる場合は
素直にリンク先にとんでインデックスを作成すれば
期待した動作になります。

インデックスについての公式ページ
https://firebase.google.com/docs/firestore/query-data/index-overview?authuser=0


今回はこれでおしまいです。