【Firestore】セキュリティールールでデータの undefined 判定
先日 Firestore のセキュリティールールで undefined かどうかの判定をするために下記のようなコードを書いていました👀
function isUndefined(data) { return data.hoge == undefined; }
実はこれ正しく動作しないので注意が必要です。サンプル実装などによく見かける下記のような null 判定はもちろん問題なく動作しますが、undefined ではできないみたいです。
function isUndefined(data) { return data.hoge == null; }
解決法
ググったら良い方法を発見できました✨
function isUndefined(data, field) { return !data.keys().hasAll([field]); }
ちなみに、keys() は Map 型のインスタンスメソッドで、それぞれの Key を配列で返します。
上記で取得した値を元に hasAll() で指定した Key がすべて含まれているのかを確認します。今回の例だと指定した Key が data の Key 配列に含まれていない場合は true になるといった感じですね。
という感じで本日も以上になります🍺