先日 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
になるといった感じですね。
という感じで本日も以上になります🍺