1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Firestoreにて特定フィールドが存在しないレコードの抽出

Posted at

ひと昔前まではDBを構築するのはお金もかかるしなかなか大変だったのですが、最近はGoogleのFirebaseを使えば無料で簡単にDBを構築できるので世の中の流れについていくのも大変です。
とはいえ、実際の業務で使用する場合もあり、覚えておくに越したことはありません。
そんなわけで、現在では業務で普通に使ってるし、フロントエンドだけでなくFunctionsを使用したバッチ処理も組んだりしている状況だったりします。
Firestoreで生成したコレクションに対してレコードを追加する際、全レコード必ず同じフィールドが存在しなくても特にエラーになったりはしません。
(仕様上まずいパターンは勿論存在しますが。)

前段が長くなりましたが。
先程記載した通り、全レコードのフィールドが統一されていなくても動く分、逆にとあるフィールドが無いレコードを見つけるのはどうしたら良いかということを調べてみました。

公式より

演算子で良いものがあればいいのですが無く、検索しても上記対応方法がなかなかヒットしませんでしたが、以下のやり方で対応できました。

    const ref = await db
      .collection('hoge')
      // .where('feild', '==', db.FieldValue.delete())
      .get()

    const dataList = ref.docs.map((doc) => doc.data())

    dataList.forEach((data) => {
      if (!data.field) {
        logger.log(data.id)
      }
    }) 

本来であれば、コメントアウトしているwhere句で対応したかったのですが出来ずにこの書き方になりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?