search
LoginSignup
8

More than 1 year has passed since last update.

posted at

updated at

firebaseのsetメソッドの使い方と活用方法

firebaseって何?

個人的には費用面、手軽さなど、多方面で最強のアーキテクチャだと思っています。

firebaseのデータ登録、更新について

処理内容 登録 更新
addメソッド ×
updateメソッド ×
setメソッド

上記のように、新規登録にも更新にも使えるsetメソッドですが、addメソッド、updateメソッドとちょっと使い方が違うんですよね。
そのあたりをわかりやすくまとめられたらと思っています。

(データの新規追加)addメソッドとsetメソッドの違いについて

一番大きな違いは、ドキュメントIDを自動発行するかどうかという違いです。

addメソッド:ドキュメントIDを自動発行する。
setメソッド:ドキュメントIDを自動発行しない。

使い分け!!
ドキュメントIDにこだわらない場合(どんな値でも良いっす!)はaddメソッドを使うのが楽!
ドキュメントIDを指定したい場合は、setメソッドを利用する。

いろんなところで言われている内容ではあると思いますが、ドキュメントIDを自動発行して、setメソッドを利用することもできます。

set.js
// ドキュメントをランダムIDで発行
const ref = firebase.firestore().collection('test').doc();
// 先ほど取得したドキュメントのIDを明示的に指定
await firebase.firestore().collection('test').doc(ref.id).set({
  name: テスト太郎,
  phone: 080-0000-0000
})
.then(function(){
  // データ登録成功時の処理
  // firebaseコマンドは、promiseオブジェクトなので、thenでつなげられる。
})
.catch(function(err){
  // データ登録失敗時
});

addメソッドの場合は、上記のソース上から、ドキュメントIDを取得してくる処理がまるまる省略できるってことですね。

ざっくり分けて、firebaseのデータ登録機能には以下の2工程に分けられます。
①ドキュメントIDを発行
②データ更新

上記を一つにまとめているのが、addメソッド、別々に分けているのがsetメソッドです。

(データ更新)updateメソッドと、setメソッドの違い

一番大きな違いは、特定のフィールドのみ更新するか、全部上書きするかの違いです。

updateメソッド:指定したフィールドのみ更新
setメソッド:全て更新

例えば、以下のようなコレクションがあったとします。

コレクション名:test
 ドキュメントID:1234567890abcdefg
  name:テスト太郎,
  phone:080-0000-0000,
  address:東京都千代田区

updateメソッド.js
firebase.firestore().collection('test').doc('1234567890abcdefg').update({
  name:テスト次郎
});
setメソッド.js
firebase.firestore().collection('test').doc('1234567890abcdefg').set({
  name:テスト次郎
});

単純にメソッドが違うだけですね。
これが、それぞれどうなるのかを見てみましょう。

updateメソッド
コレクション名:test
 ドキュメントID:1234567890abcdefg
  name:テスト次郎, ← ここのみ更新
  phone:080-0000-0000,
  address:東京都千代田区

setメソッド
コレクション名:test
 ドキュメントID:1234567890abcdefg
  name:テスト次郎,
※全上書きされ、明示的に記載したものだけが残る。

setの活用方法を考えてみた

以下の条件なんかの時はsetメソッドが輝きます。
・ドキュメントIDが指定したIDである。(自動生成ではない)
・新規作成と更新が同ソース内に両方とも含まれる。
→ データがなかった場合は、新規作成、あった場合は更新みたいなケースですね。

上記のようなときは、setメソッドを利用することによって、新規作成なのか、更新なのかを考慮する必要がなく、ソースを記載することができます。

普通に利用しようとすると、ちょっと使いづらいsetメソッドですが、設計次第でかなり便利なメソッドになります。

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
What you can do with signing up
8