Firestore в настоящее время не поддерживает удаление элементов из массива, используя только поле из элемента в этом массиве (в вашем случае, eventid
). Есть несколько обходных путей:
Метод 1
Вы можете использовать FieldValue.arrayRemove , чтобы удалить элемент из массива по значению . Значение должно соответствовать всему элементу в массиве, и оно удалит все элементы в массиве, которые соответствуют этому значению. Вы можете прочитать больше об этом, и манипулировать массивами вообще здесь . Поскольку ваши элементы массива являются объектами, код будет выглядеть следующим образом:
userRef.update({
"userevents": firebase.firestore.FieldValue.arrayRemove({"eventid": ..., "date": ..., "desc":..., "status":...})
});
Метод 2
В настоящее время вы храните объекты внутри массива. Что вы можете сделать, это сделать userevents
карту (объект) вместо массива. Предполагая, что eventid
уникален, вы можете проиндексировать карту по eventid
, а затем просто удалить запись с карты следующим образом:
userRef.update({
['userevents.' + eventid]: firebase.firestore.FieldValue.delete()
});