iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Firestore】セキュリティールールでデータの undefined 判定

先日 Firestore のセキュリティールールで undefined かどうかの判定をするために下記のようなコードを書いていました👀

    function isUndefined(data) {
      return data.hoge == undefined;
    }

実はこれ正しく動作しないので注意が必要です。サンプル実装などによく見かける下記のような null 判定はもちろん問題なく動作しますが、undefined ではできないみたいです。

    function isUndefined(data) {
      return data.hoge == null;
    }

解決法

ググったら良い方法を発見できました✨

tech-blog.sgr-ksmt.org

    function isUndefined(data, field) {
      return !data.keys().hasAll([field]);
    }

ちなみに、keys()Map 型のインスタンスメソッドで、それぞれの Key を配列で返します。

インターフェース:マップ  |  Firebase

上記で取得した値を元に hasAll() で指定した Key がすべて含まれているのかを確認します。今回の例だと指定した KeydataKey 配列に含まれていない場合は true になるといった感じですね。

インターフェース:リスト  |  Firebase

という感じで本日も以上になります🍺

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com