将评论发布到特定状态



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

我怎么才能做到呢?

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

这是我的firebase结构:

重火力点:

-users
-- 444198db-1052-4d8d-a1cd-c7e613fbe7c9
--- Status
--- StatusDate
-comments
-- K-nRDUXT07BllsO7T99
--- comment
--- commentDate

下面是我在firebase中将注释保存到注释节点的代码:

$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>

任何想法?

Thanks in advance

目前还不清楚"在一个特定的用户状态下发表评论"到底是什么意思,但这里有一些想法(我希望我在正确的轨道上)

在你的例子中,没有办法将用户与评论"关联"起来。有大约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"

然后可以查询评论节点made_by_user_id = "user_id_0001",这将检索Bill的所有评论。记住在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都是通过这种方式生成的。

相关内容

  • 没有找到相关文章

最新更新