我对使用新的Firestore函数感到困惑
https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array
在Firestore文档中,我具有带有自定义对象“ MyObect”的数组“ List”
...update("TestArray", FieldValue.arrayUnion("Test"));
工作正常且符合预期。
但是当我尝试这样做时:
MyObject object = new MyObject(Value1, Value2);
...update("List", FieldValue.arrayUnion(object));
我最终出错了
java.lang.IllegalArgumentException: Invalid data. Unsupported type: com.my.app.MyObject
at com.google.firebase.firestore.core.UserData$ParseContext.createError(com.google.firebase:firebase-firestore@@17.1.3:293)
at com.google.firebase.firestore.UserDataConverter.parseScalarValue(com.google.firebase:firebase-firestore@@17.1.3:405)
at com.google.firebase.firestore.UserDataConverter.parseData(com.google.firebase:firebase-firestore@@17.1.3:254)
at com.google.firebase.firestore.UserDataConverter.parseArrayTransformElements(com.google.firebase:firebase-firestore@@17.1.3:419)
at com.google.firebase.firestore.UserDataConverter.parseSentinelFieldValue(com.google.firebase:firebase-firestore@@17.1.3:335)
at com.google.firebase.firestore.UserDataConverter.parseData(com.google.firebase:firebase-firestore@@17.1.3:237)
at com.google.firebase.firestore.UserDataConverter.parseUpdateData(com.google.firebase:firebase-firestore@@17.1.3:171)
at com.google.firebase.firestore.DocumentReference.update(com.google.firebase:firebase-firestore@@17.1.3:239)
编辑 这是我的数据库结构:
/ UserData / UserID / Data / DataSet01 /
在此路径下,我有一些值,例如:
出生性别列表(数组)
DocumentReference document= FirebaseFirestore.getInstance().document("UserData").collection("UserID").document("DataSet01");
document.update("TestArray", FieldValue.arrayUnion("test"));
在“ test”上方的情况下,添加字段“ TestArray”和任何给定的字符串。
但是以下代码不起作用:
DocumentReference document= FirebaseFirestore.getInstance().document("UserData").collection("UserID").document("DataSet01");
document.update("List", FieldValue.arrayUnion(myObject));
答案 0 :(得分:0)
我遇到了同样的问题,发现使用自定义对象不起作用。
所以我尝试了HashMap<String,Any>
我是科特林
val myObject = HashMap<String,Any>()
myObject["Value1"]="Some Value"
myObject["Value2"]="Some other Value"
document.update("List", FieldValue.arrayUnion(myObject))
在Java中
HashMap<String, String> myObject = new HashMap<String, String>();
myObject.put("Value1","Some Value");
myObject.put("Value1","Some Other Value");
document.update("List", FieldValue.arrayUnion(myObject));
希望它会有所帮助:)