1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Flutter】Firebaseからデータを取得したい!!

Posted at

初期設定

インストール
firebase_core
cloud_firestore

firebase_core: ^2.3.0
cloud_firestore: ^4.1.0

FirebaseFirestoreのインスタンスを作成

final FirebaseFirestore _db = FirebaseFirestore.instance;

firestoreについて

データをとってくる

どんなデータをとってくるの?

とってくるデータには主に2種類ある。QuerySnapshotとDocumentSnapshotだ。

collectionはグループの名前で、documentはそのグループに含まれる一つ一つの要素だ。たとえば、collectionはusers, posts, followersみたいにsをつけるのが一般的。documentはそれぞれ固有のIDが指定され(自分で指定もできる)、キーと値のペアをいっぱい持っている。

data_model.png

上の画像で言うと、「dogs」collectionの中に、「XLfnw0faPK7q4IOl3LtC」みたいな固有IDをもつdocumentが何個かある。そしてその中に、color(キー):brown(値)のペアが色々格納されている。

まとめるとこんな感じになる。複数のdocumentをとってくる時の戻り値はQuerySnapshot、一つのdocumentをとってくるときはDocumentSnapshotになる。
flutter-3.jpg

QuerySnapshotの説明

A QuerySnapshot is returned from a collection query, and allows you to inspect the collection, such as how many documents exist within it, gives access to the documents within the collection, see any changes since the last query and more.
To access the documents within a QuerySnapshot, call the docs property, which returns a List containing DocumentSnapshot classes.

DocumentSnapshotの説明

A DocumentSnapshot is returned from a query, or by accessing the document directly. Even if no document exists in the database, a snapshot will always be returned.
If the document exists, you can read the data of it by calling the data method, which returns a Map, or null if it does not exist:

データの取得方法

以下のように、whereで探したdocumentたちを変数queryに格納しておいて、必要に応じてそこのdataをとり出していく、という使い方が一般的だと思う。この場合、queryにはQuerySnapshotが入っているので以下のプロパティ, メソッドにアクセスできる。

 final query = await _db.collection("users").where("userId", isEqualTo: firebaseUser.uid)
        .get();

とってきたデータはこんな感じで使うことができる。これはdataがあったら、trueを返す関数の一部を抜粋したものだ。

if(query.docs.isNotEmpty){
      return true;
    }

setのように、値を狙い撃ちする場合は、DocumentSnapshotがshotが返って来るので、以下のプロパティ, メソッドにアクセスできる。

 _db.collection("users").doc(user.userId).set(user.toMap());

終わりに

cloudFirestoreからデータをとって来る方法を、まとめました。
僕も手探りでやってるので、間違いがあれば指摘してくれると助かります。

1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?