【问题标题】:Can a Firestore DocumentReference be passed in an arrayUnion method?可以在 arrayUnion 方法中传递 Firestore DocumentReference 吗?
【发布时间】: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 允许您在项目控制台中添加引用而不是通过代码?

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

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

    所以你会想要这样做:

    FieldValue.arrayUnion(documentReference)
    

    代替:

    FieldValue.arrayUnion([documentReference])
    

    【讨论】:

    • 我已经尝试过了,但是它抛出了一个错误:“参数类型'DocumentReference'不能分配给参数类型'List'。”
    【解决方案2】:

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

    目前可以通过回复cloud_firestore: 0.12.11来解决

    【讨论】:

      猜你喜欢
      • 2019-04-14
      • 2019-02-09
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2020-11-26
      相关资源
      最近更新 更多