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

Firestoreの複合インデックスを削除する

CLI経由で削除する必要があった

Firebase Web SDK v9

_this.auth.addAuthTokenListener is not a function

8.6.5にダウングレードした

Firebase Summit 2021