【问题标题】:How to get specific pushedID in Firebase?如何在 Firebase 中获取特定的 pushID?
【发布时间】:2019-01-18 03:28:26
【问题描述】:

我正在尝试使用 Firebase 作为后端制作像 Instagram 这样的应用程序,当用户在任何照片中添加评论时,Firebase 会生成新的 ID,现在我想在用户点击喜欢按钮时添加一个孩子(喜欢)这个随机生成的评论 id,但问题是如何获取特定的评论 id?

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    有两种方法可以实现这一目标。因此,如果您想访问特定的评论,您必须知道唯一标识该 pcommentll 的内容。第一个解决方案是在您使用 push() 方法将新评论推送到数据库的确切时刻将该随机 id 存储在变量中。要获取该 id,您可以使用以下代码行:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    String commentId = rootRef
        .child(UserId)
        .child(PhotoId)
        .child("comments")
        .push()
        .getKey();
    

    如果您以后需要使用它,您也可以将该 id 保存在评论对象中。所以这就是它在代码中的样子:

    Map<String, Object> map = new HashMap<>();
    map.put("noOfLikes", 0);
    map.put("commentId", commentId);
    rootRef
        .child(UserId)
        .child(PhotoId)
        .child("comments")
        .child(commentId)
        .updateChildren(map);
    

    一旦你有了这个key,你就可以在你的参考中使用它来更新喜欢的数量。这种类型的操作通常使用Firebase transaction 完成,为此我建议查看我的答案 post 在其中我已经解释了如何更新分数属性,但同样的原则适用于喜欢。

    第二种方法是像这样创建一个全新的顶级集合:

    Firebase-rot
       |
       --- comments
             |
             --- commentId
                    |
                    --- noOfLikes: 1
    

    使用此解决方案,您可以更轻松地查询数据库,因为您只需要这个简单的参考即可获得喜欢的数量:

    DatabaseReference noOfLikesRef = rootRef
        .child("comments")
        .child(commentId)
        .child("noOfLikes");
    noOfLikesRef.addListenerForSingleValueEvent(/* ... */);
    

    【讨论】:

      【解决方案2】:

      试试这个:

      1. 在存储之前获取 commentID,如下所示:

        String CommentId = myRef.push().getKey();

      2. 将 ID 与评论数据一起保存:

        myRef.child(CommentId).set(yourValuesHashMap);

      3. 现在,当您检索 cmets 时,您将拥有每条评论的 ID,您可以使用该 ID 插入点赞。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-28
        • 2017-08-22
        相关资源
        最近更新 更多