递归获取所有评论(SteemJS) / 网络研习社#48

in #steemjiang5 years ago

node.jpg

如上图所示,文章的评论和以上的节点非常类似,也是由一个节点分支出去的多分支结构。以前看评论还挺简单,轮到自己来做,才发现到处都是事!

查询函数

steem.api.getContentReplies(author, permlink, function(err, result) {
    console.log(err, result)
})

查询函数倒是简单,但是又是只能查询到第一层,也就是只有对文章的评论可以查到,对评论的评论就没招了。只能想办法解决了。

评论的这种分叉形的结构只能由递归来处理,唉,提到递归又是一阵蒙圈!实在没怎么用过,硬着头皮也要用起来啊。

递归查询评论

function getReplies(author, permlink){
  _this.steem.api.getContentReplies(author, permlink, function(err, result) {
    _this.replies = _this.replies.concat(result)
    result.forEach(item=> {
      if(item.children > 0){
        let author = item.author
        let permlink = item.permlink
        getReplies(author, permlink)
      }
    })
  })

}

折腾半天,也有点效果,不过只能递归出所有评论填进一个数组内,原有的结构没有了!那怎么显示呢?

显示也是个事! 所有评论在一个数组内,这咋整呢,要对所有的数据遍历查询?!先用苯办法试下。

<div v-for="item in firstReply()">
  {{item.author}}--{{ item.body}}<br>
  <div v-for="sec in secondReply(item.permlink)" class="second">
    {{ sec.author }}--{{ sec.body }}<br>
      <div v-for="third in thirdReply(sec.permlink)" class="third">
        {{ third.author }}--{{ third.body }}<br>
      </div>
  </div>
</div>

唉,我真的有点头晕啊,这要做多少层的循环啊?!勉强做个三层就快到头了,估计还是得换方法。

等伙再到网上查查资料。嗯,等村长过来指导工作也不错!

Sort:  

试试新评论!

又一条!

这个需要在读取的时候重组一下结构。比如:
[“reply1",{child reply1, child reply2,...}],[“reply2",{child reply1}],[“reply3",{}],...

嗯,和我最初的思路差不多,递归查找时保留数据的结构,显示时也是按递归显示,这种方法应该是最好的。

Coin Marketplace

STEEM 0.20
TRX 0.25
JST 0.039
BTC 97356.48
ETH 3462.13
USDT 1.00
SBD 3.26