如何为对象Firestore中的对象数组添加值

时间:2019-10-25 16:05:59

标签: android google-cloud-firestore

我正在尝试将自定义对象添加到自定义对象内部的数组中, 我的意思是我有对象任务,我将他保存在了Cloud Firestore中,现在我有几个子任务要保存在任务对象中,但是我想每次添加一个。

我在下面尝试了此代码:

db.collection(Constants.TASKLIST).document(uid)
    .update("subTasks", FieldValue.arrayUnion(subTask));

数据结构

http://www.up2me.co.il/v.php?file=2873228.png

这是我的任务对象,任务和子任务相同

公共类Task实现了可序列化的{

private String description;
private String deadline;
private ArrayList<Task> subTasks;

public Task(String description, String deadline) {

    this.description = description;
    this.deadline = deadline;
    this.subTasks = new ArrayList<>();
}

public String getDeadline() {
    return deadline;
}

public String getDescription() {
    return description;
}

public ArrayList<Task> getSubTasks() {
    return subTasks;
}

public void setSubTasks(ArrayList<Task> subTasks) {
    this.subTasks = subTasks;
}

public Task(String description) {
    this.description = description;
}

public Task() {}

}

但是它给了我以下错误:

无效数据。不支持的类型:

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则您的ArrayList包含Task类型的对象。 Firestore仅支持一定数量的数据类型,但似乎不是其中一种。 Here是您可以保存在Firestore数据库中的项目的列表。

例如,您可以做的就是将任务另存为引用,或者简单地说,只需将文档的ID作为字符串保存在数组中即可。