【问题标题】:Firebase Firestore not allowing LinkedHashMaps to be stored - AndroidFirebase Firestore 不允许存储 LinkedHashMaps - Android
【发布时间】:2020-03-20 01:13:59
【问题描述】:

我在我的 firebase firestore db 中存储了一些自定义对象,将它们添加到文档中没有问题,事实上我可以从控制台检查它们是否存在,它们保持了它们的结构并且它们很好去吧。

但是,当我尝试检索我使用的类时:

val class = snapshot.toObject(Class::class.java)

我收到一个错误:

java.lang.IllegalArgumentException:方法 projectname.setFieldsHashMap 参数 1 的类型为 java.util.LinkedHashMap,得到 java.util.HashMap

我环顾四周,一无所获,在几个地方读到 firestore 不订购商品,但从未读过 firestore 明确不允许 LinkedHashMaps。最后一件事,当我在 Firestore 中查看文档时,所有形式的地图都以 Maps 为名,它没有指定哪种类型,所以我确实觉得它在上传时已经忽略了订单,我只是没有看到任何人同样的问题。

我将我的所有 LinkedHashMaps 更改为 HashMaps 并且它有效,因此在更改我的代码中的所有内容以解决此问题之前,最好能得到确认或对此的任何见解。

【问题讨论】:

    标签: java android firebase kotlin google-cloud-firestore


    【解决方案1】:

    LinkedHashMap 并不是 Firestore 对象字段的准确数据类型。 LinkedHashMap 对映射中的条目施加顺序。但是,Firestore 不会对地图类型字段的属性施加任何顺序。因此,如果您将 LinkedHashMap 中的所有条目写入 Firestore 对象,然后将其读回,您将丢失所有排序。因此,您应该使用 HashMap,因为它表示一组没有顺序的简单键/值对。

    【讨论】:

    • 是的,很抱歉我没有回复您,但感谢您的确认!我将所有内容都转换为 > 的哈希图,然后使用 Int 值来获取我感兴趣的顺序
    猜你喜欢
    • 2017-09-28
    • 2020-05-24
    • 1970-01-01
    • 2017-03-24
    • 2020-09-26
    • 2016-12-24
    • 1970-01-01
    • 2021-07-17
    • 2016-10-12
    相关资源
    最近更新 更多