在尝试从Web应用程序中删除Firebase中的文档字段时,收到错误“ ERROR FirebaseError:函数DocumentReference.update()用无效数据调用。不支持的字段值:自定义DeleteFieldValueImpl对象(位于字段t1中)”。 / p>
出于测试目的,我创建了一个测试集合/文档“ / test / ZJ6UMPjc7DEQdKKphTxJ”
{
"t1": "test",
"t2": "test2"
}
并运行应删除“ t1”字段的代码。
this.fStore.doc('/test/ZJ6UMPjc7DEQdKKphTxJ').update({
"t1": firebase.firestore.FieldValue.delete()
});
但是,当我在我的角度应用程序中运行代码时,出现上述错误。该错误似乎是因为Web SDK无法写入对象。但是“ https://firebase.google.com/docs/firestore/manage-data/delete-data”上的所有文档都说这是从Web应用程序获取的正确方法。
我尝试更新所有库,但仍然没有成功。我目前的依赖项是
"@angular/fire": "5.2.1",
"firebase": "6.1.1",
"firebaseui": "4.0.0",
"firebaseui-angular": "3.4.2",
有什么想法吗?
答案 0 :(得分:0)
我发现了问题。如果其他人尝试将所有Firebase逻辑包装到共享库中,我将在此处保留。
在我的应用程序中,我的前端和后端都触摸Firestore。为了简化维护,我将所有Firestore访问都拉到了自己的库中,该库从应用程序(前端或后端)接收Firestore对象的实例。简而言之,我的前端或后端创建并配置了一个Firestore实例,然后将该对象传递给我的共享库。现在,我只需要在1个地方编辑firestore路径和逻辑即可。
问题出在删除并让我的共享库导入firebase并使用firebase.firestore.FieldValue.delete()
实例而引起。 Firestore的编写方式,我的应用程序可以处理我应用程序中的FieldValue.delete()。但是,如果它收到从我的共享库导入的FieldValue.delete(),将会呕吐。即使版本相同,Javascript“ instanceOf()”也表示来自一个共享库的FieldValue与应用程序实例不同。