首页 > 解决方案 > 如何向对象 Firestore 内的对象数组添加值

问题描述

我正在尝试将自定义对象添加到自定义对象内的数组中,我的意思是我有对象任务我将他保存在云火库中,现在我有几个子任务我想将它们保存在任务对象中,但我每次都想加一个。

我在下面尝试了这段代码:

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

数据结构

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

这是我的任务对象,任务和子任务是一样的

公共类任务实现可序列化{

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() {}

}

但它给了我以下错误:

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

标签: androidgoogle-cloud-firestore

解决方案


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

例如,您可以将任务保存为参考,或者为了简单起见,只需将文档的 ID 保存为数组中的字符串。


推荐阅读