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

Ошибка получения «ОШИБКА 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",

Есть идеи?

1 Ответ

0 голосов
/ 13 июня 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...