【问题标题】:Android Firestore - Update object in Array leads to unsupported typeAndroid Firestore - 更新数组中的对象导致类型不受支持
【发布时间】:2019-04-23 08:49:30
【问题描述】:

我对使用新的 firestore 功能感到困惑

https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array

在 Firestore 文档中,我有数组“List”和自定义对象“MyObect”

...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"));

添加字段“TestArray”和任何给定的字符串,在上面的例子中是“test”。

但是下面的代码不起作用:

DocumentReference document= FirebaseFirestore.getInstance().document("UserData").collection("UserID").document("DataSet01");
document.update("List", FieldValue.arrayUnion(myObject));

【问题讨论】:

  • 请添加您的数据库结构以查看您的TestArray 以及您的List 数组。

标签: android arrays google-cloud-firestore


【解决方案1】:

我遇到了同样的问题,发现使用自定义对象不起作用。 所以我尝试了HashMap<String,Any>

我是 Kotlin

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));

希望对你有帮助:)

【讨论】:

  • 我们如何才能将该字段作为数组列表获取?
  • 天才。像魅力一样工作。
猜你喜欢
  • 2021-03-31
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2020-07-17
  • 2022-10-16
  • 2018-06-25
  • 1970-01-01
相关资源
最近更新 更多