【问题标题】:Firestore update fails with IllegalArgumentException: Invalid data. Unsupported typeFirestore 更新失败并出现 IllegalArgumentException:无效数据。不支持的类型
【发布时间】:2018-06-25 13:51:17
【问题描述】:

打电话时

FirebaseFirestore.getInstance().collection("myCollection").document("doc1").update("field1",myObject);

我得到错误:

IllegalArgumentException:无效数据。不支持的类型:com.myProg.objects.MyObject(在字段 field1 中找到)

即使我可以将 myObject 添加到 firestore,但它是 myDoc 的一部分,使用 Set 方法没有问题。

MyObject 类(最简单的例子):

public class MyObject{
   public int i;
}

编辑: 尝试前我的数据库结构:

我的收藏->

doc1:

field0 - "3"

field1 - null

也试过不带field1

【问题讨论】:

  • 如果你还在寻找这个问题的答案,你能发布MyObject类的代码吗?
  • @BobSnyder 添加了我的对象
  • 您的帖子说:当 myObject 是 myDoc 的一部分时,我可以使用 Set 方法将它添加到 firestore。你可以发布代码吗? myDoc 是另一个 custom object,它的成员是 MyObject 的实例吗?
  • @BobSnyder 你是对的
  • 到目前为止有什么解决办法吗?

标签: android firebase firebase-security google-cloud-firestore


【解决方案1】:

所以,从现在开始更新的唯一方法是使用地图。在您的情况下,它应该看起来像

Map<String, Object> updateMap = new HashMap();
updateMap.put("field1.i", myObject.i);

FirebaseFirestore.getInstance().collection("myCollection")
.document("doc1").update(updateMap);

我认为 Firestore 确实应该更新 API 以促进整个嵌套对象的更新。

【讨论】:

    【解决方案2】:

    就我而言,我想更新 firestore 中的复杂对象。

    public class UserInitialModel { private List<ServiceItemModel> servicesOffered; }

    public class ServiceItemModel{
    private String serviceName;
    private String price;
    }
    

    当我尝试更新时它给了我错误 java.lang.IllegalArgumentException:无效数据。不支持的类型:

    我通过使用地图解决了它

    List<Map<String,Object>> list=new ArrayList<>();
            for (ServiceItemModel model:
            mUserInitialPresenter.getUserInitialModel().getServicesOffered()) {
                Map<String,Object> servicesOffered=new HashMap<>();
                servicesOffered.put("serviceName",model.getServiceName());
                servicesOffered.put("price",model.getPrice());
                list.add(servicesOffered);
            }
            dataMap.put("servicesOffered",list);
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 2014-08-29
      • 2021-06-29
      • 2012-10-22
      • 2023-01-03
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      相关资源
      最近更新 更多