致电
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;
}
编辑: 尝试前我的数据库结构:
myCollection - >
doc1: field0 - "3" field1 - null
也尝试了没有field1
答案 0 :(得分:11)
因此,现在更新的唯一方法是使用地图。在你的情况下它应该看起来像
Map<String, Object> updateMap = new HashMap();
updateMap.put("field1.i", myObject.i);
FirebaseFirestore.getInstance().collection("myCollection")
.document("doc1").update(updateMap);
我认为Firestore应该真正更新API以便于整体嵌套对象的更新。
答案 1 :(得分: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);