【问题标题】:Firebase add item to array dynamicallyFirebase 将项目动态添加到数组
【发布时间】:2017-07-16 17:22:33
【问题描述】:

我正在尝试使用 Firebase for Android 制作某种 cmets。 只是有一个问题,有没有办法将新项目添加到数组中?

例如,如果我有这样的对象

如果我尝试推送,它会将其转换为地图

而且我不想每次都覆盖这个对象,因为我将支持多用户并且它会在某些时候失败。

我正在尝试将其作为一个列表来执行,以便不为我的模型创建 DataTransferObjects,并支持使用 firebase 进行自动解析。

谢谢!实际上,如果没有想法,那么创建地图。

我的对象模型:

public class Company implements Parcelable {
    private String id;
    private String name;
    private String description;
    private List<Comment> comments;
}

推送项目代码:

final DatabaseReference ref = companiesRef.child(companyId).child(NODE_COMMENTS).push();
        return Single.create(e -> ref.setValue(comment)
                .addOnCompleteListener(task -> {
                    e.onSuccess(task.isSuccessful());
                }));

【问题讨论】:

标签: android list firebase firebase-realtime-database


【解决方案1】:

这就是它的工作原理,请看下面的示例,我将“0”存储为我的第一个commentID,将“1”存储为我的第二个commentID。如您所见,我将 lastCommentID 存储为列表中最后一条评论的 commentID。

{
  "comments": {
    "0": {
      "text": "mycomment",
      "time": "142351516"
    },
    "1": {
      "text": "secondcomment",
      "time": "153426564"
    }
  }

 "lastCommentId": "1"
}

因此,每当您想向 firebase 添加新评论时,您必须首先将 lastCommentID 作为字符串检索并将其转换为整数(例如 1),然后将值加 1(例如 2),以便在保存下一个注释它不会覆盖以前的版本。

请注意,每次向数据库添加评论时都会替换 lastCommentID。

{
  "comments": {
    "0": {
      "text": "mycomment",
      "time": "142351516"
    },
    "1": {
      "text": "secondcomment",
      "time": "153426564"
    },
    "2": {
      "text": "thirdcomment",
      "time": "153426564"
    }
  }

 "lastCommentId": "2"
}

【讨论】:

  • 谢谢,问题是我想将新对象(评论)添加到 Firebase 已有的列表中。
  • 对不起,我对情况有误解。我看到你已经找到了答案。为什么要问一个你已经知道答案的问题?
  • Umar,抱歉,此代码用于推送对象,但正如我在第二个屏幕截图中显示的那样,它会将列表转换为地图,并且我正在尝试将新项目插入列表,所以这不是我的我正在寻找。刚刚添加它以显示我已经尝试过的内容。所以我还在寻找答案
  • 那么您希望保存下一个具有列表 id 的评论吗?像 0,1,2,3,4 等等 id ?但是您不想使用推送功能?这就是你要解释的吗?
  • 是的,有点。 Push 函数为新项目生成字符串 id,所以这个数组变成了 map。但我阅读了文档,似乎 firebase 不支持我计划使用的数组。
【解决方案2】:

您不需要在 Firebase 中编写模型类,您可以使用 Jackson 将 JSON 解析为 Java 对象并将其推送到 Firebase。

您可以使用 Jackson 将 JSON 解析为 Java 对象

。例如可以获取:Object、List、Hashmap、Integer、String、 等没有 POJO 类。

要查看更多信息,请访问this answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2021-10-31
    • 2011-11-15
    • 2012-08-27
    相关资源
    最近更新 更多