将评论发布到特定状态

时间:2015-10-04 01:20:35

标签: angularjs firebase angularfire

正如标题所说,我正在尝试将评论发布到特定的用户状态。到目前为止,我可以发表评论并将其保存到firebase中,但这些评论会显示在所有状态中,当然这是因为它们未被引用到该特定用户状态。

我怎样才能做到这一点?

有人告诉我,每个评论都应该有一个属性,其中包含状态或用户的ID才能进行查询。但那就是我不知道该怎么做。

这是我的firebase结构:

火力地堡:

-users
-- 444198db-1052-4d8d-a1cd-c7e613fbe7c9
--- Status
--- StatusDate

-comments
-- K-nRDUXT07BllsO7T99
--- comment
--- commentDate

以下是我将代码保存到firebase中的comments节点的代码:

$scope.addComment = function(){ 

                        console.log("Adding Comment");
                        var comment = $scope.comment;
                        console.log(comment);

                        var refcomment = new Firebase("https://firebaseurl/comments/");
                        refcomment.push({
                            comment: comment,
                            commentDate: Firebase.ServerValue.TIMESTAMP
                        });      

        }

这里是显示评论的代码(ng-repeat):

refcomments = new Firebase("https://firebaseurl/comments/");
    $scope.comments = $firebaseArray(refcomments);

HTML:

<div ng-controller="ComentariosCtrl">
  <div class="input-group">
  <input type="text" class="form-control" placeholder="Comment Here..." ng-model="comment">
  <span class="input-group-btn">
  <button class="btn btn-default" type="button" ng-click="addComment()">Post!</button>
  </span>
  </div><!-- /input-group -->
  <div class="cmt">
  <div class="panel" ng-repeat="comentarios in comments">
  <hr >
  <p>{{comentarios.comment}}</p>
  </div>
  </div><!--FIN DE COMENTARIOS -->
  </div>

有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

不清楚将评论发布到特定用户状态&#39;完全是指,但这里有几个想法(我希望我在正确的轨道上)

在你的例子中,没有办法关联&#39;用户评论。有大约100种不同的方法可以做到这一点,但是一个可以轻松查询用户评论的扁平化结构是:

users
  user_id_0001
    user_name: "Bill"
    user_status: "some status"
    status_date: "some status_date"
  user_id_0002
    user_name: "Ted"
    user_status: "some status"
    status_date: "some status_date"

comments
  comment_id_0001
    made_by_user_id: "user_id_0001"
    comment: "Hey Ted!"
  comment_id_0002
    made_by_user_id: "user_id_002"
    comment: "Hey Bill! Let's go on a most excellent adventure"

然后可以查询comments_by_user_id =&#34; user_id_0001&#34;这将检索比尔的所有评论。请记住,在Firebase中,奉承越多越好。优良!

另一个不太灵活的选择是将用户评论存储在他们自己的用户节点中

users
      user_id_0002
        user_name: "Ted"
        user_status: "some status"
        status_date: "some status_date"
        comments
          comment_id_0001:
            comment: "Just call me Neo"
            timestamp: "some timestamp"
          comment_id_0002:
            comment: "I feel like I'm in the Matrix"
            timestamp: "some timestamp"
          comment_id_0003:
            comment: "You trying to tell me.. that I can dodge bullets?"
            timestamp: "some timestamp"

现在,如果您想要检索所有用户评论,他们就在他们自己的用户节点内/ users / user_id_0002 / comments

这实际上取决于您对数据的使用情况。

关键是要将数据与其存储的节点名称取消关联。使用push()函数将生成唯一ID可以帮助实现这一点 - 在上面的示例中user_id_0001以这种方式生成comment_id_0001