LoginSignup
19
11

More than 5 years have passed since last update.

Firestore で Object の一部だけ更新する

Last updated at Posted at 2018-08-26

Firestore でフィールドを Object にしていて一部のプロパティだけを更新したいということはよくあると思います。個人的に一番楽でよく使っている方法をメモしておきます。もっといい方法があったら教えてください。

例えばこんな感じの Object を格納しているとします。そして、 hoge.piyo.fuga の value のみを更新して、それ以外のプロパティは残したい。

hoge: {
  piyo: {
    fuga: 'example',
    bar: 'bar text'
  },
  baz: 'foo'
}

以下の方法だと当然ですが意図したとおりになりません。

DB.collection('sample').doc(id).update({
  hoge: {
    piyo: {
      fuga: 'updated'
    }
  }
})

こんな感じの Object になってしまいます。

hoge: {
  piyo: {
    fuga: 'example'
  }
}

そこでドット区切りでプロパティの key を指定してあげます。 [`hoge.piyo.fuga`] このように key をドット区切りで繋げていって指定すれば OK です。

DB.collection('sample').doc(id).update({
  //[`hoge.piyo.fuga`]: 'updated'
  // なぜか Qiita のシンタックスハイライトで↑のコードを書くとエスケープで消えるのでコメントで表記
})

これはうまくいきます。

hoge: {
  piyo: {
    fuga: 'updated',
    bar: 'bar text'
  },
  baz: 'foo'
}

ちなみに、通常の Object 表記とドット区切りのデータをコンバートするには dot-object という npm ライブラリを浸かると便利です。

19
11
1

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
19
11