Firestore DocumentReference可以在arrayUnion方法中传递吗?

时间:2020-02-10 14:26:44

标签: firebase flutter dart google-cloud-firestore

我正在尝试将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'

据我了解,这意味着DocumentUnference无法被arrayUnion / arrayRemove方法接受。

如果确实如此,是否有解决办法?为什么Firebase允许您在项目控制台中添加引用,但不能通过代码添加引用?

2 个答案:

答案 0 :(得分:1)

您要取消引用documentReference,这是不可能的。

因此,您需要这样做:

FieldValue.arrayUnion(documentReference)

代替:

FieldValue.arrayUnion([documentReference])

答案 1 :(得分:0)

这是cloud_firestore: 0.13.0 to 0.13.1+1中的一个错误,正如我在此处的错误报告:GitHub: DocumentReference doesn't convert to FieldValue所述。

当前可以通过恢复为cloud_firestore: 0.12.11

来解决