Вопрос:

Ошибка удаления поля из firestore из веб-приложения. «Неподдерживаемое значение поля: пользовательский объект DeleteFieldValueImpl»

angular firebase google-cloud-firestore

21 просмотра

1 ответ

3 Репутация автора

Ошибка получения «ОШИБКА FirebaseError: Функция DocumentReference.update () вызвана с неверными данными. Неподдерживаемое значение поля: пользовательский объект DeleteFieldValueImpl (найден в поле t1)» при попытке удалить поле документа в Firebase из веб-приложения.

Для целей тестирования я создал тестовую коллекцию / документ "/ test / ZJ6UMPjc7DEQdKKphTxJ", которая

{
  "t1": "test",
  "t2": "test2"
}

и запустил код, который должен удалить поле «t1».

this.fStore.doc('/test/ZJ6UMPjc7DEQdKKphTxJ').update({
        "t1": firebase.firestore.FieldValue.delete()
      });

Однако, когда я запускаю код в своем угловом приложении, я получаю вышеуказанную ошибку. Ошибка, кажется, потому что веб SDK не может писать объекты. Но вся документация по адресу " https://firebase.google.com/docs/firestore/manage-data/delete-data " говорит, что это правильный путь из веб-приложения.

Я попытался обновить все библиотеки, и все еще не пошел. Мои зависимости в настоящее время

"@angular/fire": "5.2.1",
"firebase": "6.1.1",
"firebaseui": "4.0.0",
"firebaseui-angular": "3.4.2",

Есть идеи?

Автор: Jeff Plummer Источник Размещён: 08.06.2019 10:12

Ответы (1)


0 плюса

3 Репутация автора

Решение

Я нашел проблему. Я оставлю это здесь, на случай, если другие люди попытаются обернуть всю свою логику Firebase в общую библиотеку.

В моем приложении и мой интерфейс, и мой внутренний интерфейс касаются Firestore. Чтобы упростить обслуживание, я перетянул весь доступ к Firestore в его собственную библиотеку, которая получает экземпляр объекта firestore из приложения (веб-интерфейс или серверная часть). Проще говоря, мой фронтенд или бэкэнд создают и настраивают экземпляр firestore, а затем передают этот объект в мою общую библиотеку. Теперь мне нужно только редактировать пути и логику пожарного депо в 1 месте.

Проблема возникает с удалением и наличием моей общей библиотеки для импорта firebase и использованием экземпляра firebase.firestore.FieldValue.delete(). Как написано в firestore, мое приложение может обрабатывать FieldValue.delete () из моего приложения. Но будет рвать, если он получит FieldValue.delete (), импортированный из моей общей библиотеки. Даже если версии совпадают, Javascript «instanceOf ()» говорит, что FieldValue из одной общей библиотеки отличается от экземпляра приложения.

Автор: Jeff Plummer Размещён: 12.06.2019 09:22
Вопросы из категории :
32x32