Value for argument "dataOrField" is not a valid Firestore value. Cannot use "undefined" as a Firestore value

公開日時

Firestoreのドキュメントを更新する際に↓のようにundefinedなfiledを含むオブジェクトを渡したところ、

await firestore.collection(`customers`).doc(uid).update({
  someField: undefined,
})

以下のエラーが発生した。

Error: Update() requires either a single JavaScript object or an alternating list of field/value pairs that can be followed by an optional precondition.
Value for argument "dataOrField" is not a valid Firestore value.
Cannot use "undefined" as a Firestore value (found in field "someField").
If you want to ignore undefined values, enable `ignoreUndefinedProperties`.

undefinedはFirestoreの値には使えないが、オプションでundefinedを無視することもできるとのこと。

ということで、 firestore.settingsignoreUndefinedProperties を有効にした。

const firestore = admin.firestore()
firestore.settings({ ignoreUndefinedProperties: true })

これでundefinedなfiledは無視されてドキュメントが更新できるようになった。

参考


Related #firebase

SharedArrayBuffer updates in Android Chrome 88 and Desktop Chrome 92

クロスオリジン分離対応を実施

Firebase Emulator Suiteで起動しているFunctionsから本番のFirestoreにアクセスする

functionsのみエミュレータを使うようにするとできる

Firebase Functions呼び出し時に Error: function terminated. が発生した場合

firebase functions:logで詳細を確認できる

Cloud BuildでFirebase Hostingのデプロイを行う

リポジトリへのpush以外をトリガーにしたい場合に使用

Firebase FunctionsでonCallで実装しているにも関わらずCORSエラーが発生した場合

Cloud Functions(GCP)の管理画面を確認してみる

JestでFirestoreセキュリティルールのテストを書く

Github ActionsでCIを回せるようになった