【Firebase】Firestoreですでに存在するデータの一部を更新または新規作成

Firestoreでデータの一部を更新

Firestoreですでに存在するデータの一部だけを更新、書き換えたい場合、set()メソッドを使います。

例えば下のように、id=0001のusersのnameを更新したいとします。

“Jhon”の名前を”Jhon Doe”に変えたい場合、コード例は下記です。

//firestoreの定義
const db = firebase.firestore()
const usersRef = db.collection("users")

//存在しない場合は作成、存在する場合は何もしない
usersRef.doc('0001').set({
  name: 'Jhon Doe',
}, {merge: true})
  .then((docRef) => {
    if (docRef) {
      console.log("Success edit user.");
    }
  })
  .catch((error) => {
    console.error("Error edit user: ", error);
  })

set()メソッドは、第2引数に {merge: true} を指定することで、set()に渡したプロパティのみを更新します。すでに存在するプロパティの値は書き換えません。

 例えば下のように、Jhonがnameとageという2つのプロパティを持っていたとしても、nameだけが”Jhon Doe”で更新されます。

存在しない場合は新規作成

set()メソッドでは指定したデータが存在しない場合、自動でデータが作成されます。

第2引数に {merge: true} を指定しない場合、呼び出すたびに新しいデータで上書きされてしまうので注意してください。

set()メソッドについて詳しくは下の公式ページに詳しく解説されています。

コメント