かとのぼのマイコード・マイライフ

プログラミング初心者とアプリの個人開発者向けのブログ。たまに銭湯

Cloud Firestoreの配列の検索・追加・削除は「array-contains」「arrayUnion 」「arrayRemove」が便利

この記事をシェアする

f:id:katonobo:20190502112425p:plain

FirebaseのFirestoreで、配列の扱いが便利になっていたのでメモ。

従来では、配列の検索が面倒だった

今まで、FirebaseのFirestoreは配列の扱いが面倒でした。というか使いづらかったです。というのも、配列を検索するために、keyを各項目にして、値を「true」にするという方法が必要でした。

https://firebase.google.com/docs/firestore/solutions/arrays

// Sample document in the 'posts' collection
{
    title
: "My great post",
    categories
: {
       
"technology": true,
       
"opinion": true,
       
"cats": true
   
}
}

このようにしないと配列を検索にヒットできませんでした。

現在(2019年5月8日)日本語の公式ドキュメントではまだこの方法しか載っていませんし、多くの記事でもこの方法が主流です。

Version 5.3.0から一般的な配列のデータの入れ方で対応できるようになった

しかし、実はこのような面倒な方法でなく配列のデータが検索、追加、削除ができるようになっていました。

Firebase JavaScript SDK Release Notes  |  Firebase 

Added firebase.firestore.FieldValue.arrayUnion() and firebase.firestore.FieldValue.arrayRemove() to atomically add and remove elements from an array field in a document.

 

Added 'array-contains' query operator for use with .where() to find documents where an array field contains a specific element.

詳しい使い方はこちらの記事がわかりやすいです(助かります)

qiita.com

ポイントは、

  • 検索には「array-contains」
  • データの追加は「firebase.firestore.FieldValue.arrayUnion() 」
  • 削除には「firebase.firestore.FieldValue.arrayRemove()」

だということですね。

つまり普通の配列のデータの扱い方ができるようになっているということです(!)

知っていれば相当便利な方法だと思います。