无法在 Firestore 中使用 arrayRemove。使用无效数据调用函数 DocumentReference.update()
Cant use arrayRemove in Firestore. Function DocumentReference.update() called with invalid data
尝试使用“arrayRemove”删除数组中的元素时看不到我的代码中的问题。
这是我的代码:
const getRef = firebase.firestore().collection('customers').doc('andreas');
const response = await getRef.get();
console.log(response.data()); // answer { bookings: [ '123booking', '456booking' ] }
// then i'm trying to delete the element with value 123booking:
let deleteRef = firebase.firestore().collection('customers').doc('andreas');
const removeRes = await deleteRef.update({
bookings: admin.firestore.FieldValue.arrayRemove('123booking')
});
这是我的错误信息:
Error [FirebaseError]: Function DocumentReference.update() called with invalid data. Unsupported field value: a custom object (found in field bookings in document customers/andreas)
显然您混淆了 JS SDK 和 Admin SDK 的使用:
一方面,你做到了
const getRef = firebase.firestore().collection('customers').doc('andreas'); // JS SDK
另一方面,你做
bookings: admin.firestore.FieldValue.arrayRemove('123booking') // Admin SDK
如果您实际使用的是 Admin SDK(请参阅问题标签),您应该这样做
const getRef = admin.firestore().collection('customers').doc('andreas');
另一方面,如果您没有使用 Admin SDK,即此代码是在网络应用程序中执行的,请更改以下行
bookings: admin.firestore.FieldValue.arrayRemove('123booking')
到
bookings: firebase.firestore.FieldValue.arrayRemove('123booking')
尝试使用“arrayRemove”删除数组中的元素时看不到我的代码中的问题。
这是我的代码:
const getRef = firebase.firestore().collection('customers').doc('andreas');
const response = await getRef.get();
console.log(response.data()); // answer { bookings: [ '123booking', '456booking' ] }
// then i'm trying to delete the element with value 123booking:
let deleteRef = firebase.firestore().collection('customers').doc('andreas');
const removeRes = await deleteRef.update({
bookings: admin.firestore.FieldValue.arrayRemove('123booking')
});
这是我的错误信息:
Error [FirebaseError]: Function DocumentReference.update() called with invalid data. Unsupported field value: a custom object (found in field bookings in document customers/andreas)
显然您混淆了 JS SDK 和 Admin SDK 的使用:
一方面,你做到了
const getRef = firebase.firestore().collection('customers').doc('andreas'); // JS SDK
另一方面,你做
bookings: admin.firestore.FieldValue.arrayRemove('123booking') // Admin SDK
如果您实际使用的是 Admin SDK(请参阅问题标签),您应该这样做
const getRef = admin.firestore().collection('customers').doc('andreas');
另一方面,如果您没有使用 Admin SDK,即此代码是在网络应用程序中执行的,请更改以下行
bookings: admin.firestore.FieldValue.arrayRemove('123booking')
到
bookings: firebase.firestore.FieldValue.arrayRemove('123booking')