可以在 arrayUnion 方法中传递 Firestore DocumentReference 吗?
Posted
技术标签:
【中文标题】可以在 arrayUnion 方法中传递 Firestore DocumentReference 吗?【英文标题】:Can a Firestore DocumentReference be passed in an arrayUnion method? 【发布时间】:2020-05-25 21:27:05 【问题描述】:我正在尝试将 Firestore 文档引用添加到用户文档中的数组字段,以将引用保存为“收藏夹”。我可以从文档引用数组中读取,但不能使用 arrayUnion 更新数组或使用 arrayRemove 从数组中删除元素。
这是我添加对数组的引用的代码:
await userDocument.reference.updateData('favourites':FieldValue.arrayUnion([documentReference]));
并从数组中删除引用:
await userDocument.reference.updateData("favourites":FieldValue.arrayRemove([documentReference]));
问题在于出现如下错误:
Unhandled Exception: Invalid argument: Instance of 'DocumentReference'
据我了解,这意味着 arrayUnion/arrayRemove 方法不能接受 DocumentReference。
如果确实如此,有没有办法解决这个问题?以及为什么 Firebase 允许您在项目控制台中添加引用而不是通过代码?
【问题讨论】:
【参考方案1】:您正在取消引用 documentReference
,这是不可能的。
所以你会想要这样做:
FieldValue.arrayUnion(documentReference)
代替:
FieldValue.arrayUnion([documentReference])
【讨论】:
我已经尝试过了,但是它抛出了一个错误:“参数类型'DocumentReference'不能分配给参数类型'List这是cloud_firestore: 0.13.0 to 0.13.1+1
中的一个错误,正如我在此处的错误报告中所述:GitHub: DocumentReference doesn't convert to FieldValue。
目前可以通过回复cloud_firestore: 0.12.11
来解决
【讨论】:
以上是关于可以在 arrayUnion 方法中传递 Firestore DocumentReference 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Firestore 中正确使用 arrayUnion?
Swift & Firestore - 使用 .arrayUnion() 将字典附加到嵌套数组
尝试更新firestore中的数组时出现“TypeError:无法读取未定义的属性'arrayUnion'”
使用 Flutter 的 FieldValue arrayUnion 和 Cloud FireStore
OwinCommunicationListener 中托管的 Async Web Api 中的 Fire and Forget 方法