LoginSignup
1
0

More than 3 years have passed since last update.

Firebaseでデータの取得、追加、更新を行う

Last updated at Posted at 2020-07-31

Firebaseでデータの読み込み、書き込み、更新を行う

目次

1.目的

2.データ操作の基本

3.データ取得

4.データ追加

5.データ更新

6.まとめ

1.目的

備忘録として
[前提条件]
・Firebaseの構築に関しては、もう終わっている。
(Firestoreの設定も含めて)

2.データ操作の基本

FirestoreにアクセスするためのAPIは既に用意されている。

データ操作の基本として、以下の構文が基本となる。
firebase.firestore() − ①
 .collection('[コレクション名]') − ②
 .where('[フィールド名]' ,'[比較演算子]' ,[検索する値]) − ③
 .orderBy('オーダーをかけるフィールド名' ,'[asc or desc]') − ④
 .limit([整数]) − ⑤

上記が基本構造となる。
必須項目は ①、②
任意項目は ③、④、⑤

また、whereはメソッドチェーンで繋げることができる。
この時、重要となるのが、「Firebaseは'AND'条件のみサポートしている」という点である。
現在は、'OR'条件は利用できない。

また、利用できる比較演算子は以下の通り。
・'=='
・'>'
・'>='
・'<'
・'<='
・'in'
・'array-contains'
・'arrat-contains-any'

上記の中で説明が必要なのは、以下だと思う。
・'array-contains'
・'arrat-contains-any'

'array-contains' は、配列形式で持っているデータの中から、完全一致する文言を探す。
 こんな書き方
  .where('[コレクション名]' ,'array-contains' ,'りんご')

'arrat-contains-any' は上記の拡張版で配列形式で持っているデータの中から、完全一致する文言を複数個探す。
 こんな書き方
  .where('[コレクション名]' ,'array-contains-any' ,['りんご', 'みかん'])

3.データ取得

データ操作の基本を踏まえ、取得は以下の様な記載方法となる。
firebase.firestore()
 .collection('[コレクション名]')
 .where('[フィールド名]' ,'[比較演算子]' ,[検索する値])
 .orderBy('オーダーをかけるフィールド名' ,'[asc or desc]')
 .limit([整数])
 .get();

記載しているのはjsなので、結果を待たない。
上記メソッドはpromise関数なので、「then()」を使うなり、「async await」を使うなりして取得する。

4.データ追加

firebase.firestore()
 .collection('[コレクション名]')
 .add(
  {
   'name':'フルーツ',
   'number':1,
   available:true,
   'fruit':[
    'りんご',
    'みかん'
   ],
   'creater':[{
    '生産者':'AA農場',
    '電話番号':'080-0000-0000'
   }],
   [{
    '生産者':'BB農場',
    '電話番号':'090-1111-1111'
   }]
  }
 );

こんな感じ。
色々な型を使える。
[]は配列indexが自動でインクリメントされて生成される。
{}はkeyとvalueを指定できる。

例えば「'creater'」は以下の様に保存される。
[0] => 生産者 => 'AA牧場'
   電話番号 => '080-0000-0000'
[1] => 生産者 => 'BB牧場'
   電話番号 => '090-1111-1111'

ドキュメントIDは、何も指定しなければ自動生成される。
ドキュメントIDとは、そのデータを表す一意の特定を行うために作成されるID。

実は追加のメソッドは「add()」だけでなく「set()」も使えるが、多分使わない方が無難。
この辺は説明すると長くなるので、一旦省略。

もしも、ドキュメントIDを指定したい場合は、set()を利用する必要があるが、その場合は・・・いずれ書くかもしれません。

5.データ更新

firebase.firestore()
 .collection('[コレクション名]')
 .doc(ドキュメントID)
 .update(
  {
   available:false,
  }
 );

上記で追加したデータを更新すると考えたときに、他のフィールドは変更なく、「available」フィールドのみ更新される。

更新でも「set()」メソッドを使えるが、使わない方が無難。理由は(ry

6.まとめ

まずは基本を覚えて、
.get()
.add()
.update()

を覚えれば、基本的にはfirestoreを使える。

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