代码之家  ›  专栏  ›  技术社区  ›  Prasanna

如何在Firestore中插入对象数组#AskFirebase公司

  •  0
  • Prasanna  · 技术社区  · 6 年前

    enter image description here 我想在Firestore中插入一个对象数组?我可以从Firestore控制台添加,但是从Java添加不起作用?我在这里附上我的控制台快照,代码是:

    val map = HashMap<String, Any>()
        map["one"] = request.records
        dayFormDoc.set(map)
    

    2 回复  |  直到 5 年前
        1
  •  3
  •   chetan mahajan    6 年前

    试试这个,

    Map<String, Object> docData = new HashMap<>();
    
    docData.put("listExample", Arrays.asList(1, 2, 3));
    

    java

    ArrayList<Object> arrayExample = new ArrayList<>();
    Collections.addAll(arrayExample, 5L, true, "hello");
    docData.put("arrayExample", arrayExample);
    

    更多信息 https://firebase.google.com/docs/firestore/manage-data/add-data

        2
  •  2
  •   Alex Mamo    6 年前

    您不能简单地将数组添加到Cloud Firestore数据库,因为您将得到如下错误:

    原因:java.lang.IllegalArgumentException:无效数据。不支持数组;改为使用列表(在字段数组中找到)

    所以要解决这个问题,您应该将数组转换为一个列表,如下几行代码所示。

    Map<String, Object> map = new HashMap<>();
    String[] array = {"One", "Two", "Three"};
    map.put("array", Arrays.asList(array));
    dayFormDoc.update(map);
    

    对于Kotlin:

    val map = HashMap<String, Any>()
    val array = arrayOf("One", "Two", "Three")
    map["array"] = Arrays.asList(*array)
    dayFormDoc.update(map)