如何使用RestFB获取评论的回复数量

时间:2017-08-09 12:00:30

标签: java facebook-graph-api java-8 restfb

我需要获得有关经过身份验证的用户拥有的所有节点的回复评论。

我通过以下方式使用流java 8:

private Stream<Comment> getCommentsByObjectAfterThan(final FacebookClient facebookClient, final String objectId, final Date startDate, User user) {

        Connection<Comment> commentConnection
                = facebookClient.fetchConnection(objectId + "/comments", Comment.class);

        return StreamUtils.asStream(commentConnection.iterator())
                .flatMap(List::stream)
                .flatMap(comment
                        -> StreamUtils.concat(
                        getCommentsByObjectAfterThan(facebookClient, comment.getId(), startDate, user), comment)
                )
                .filter(comment -> !comment.getFrom().getId().equals(user.getId()) &&
                        (startDate != null ? comment.getCreatedTime().after(startDate) : true));
    }

我需要优化第二个flapMap,它使用顶级注释及其回复创建一个流。

显然它必须这样做:

.flatMap(comment ->  comment.getCommentCount() > 0 ? StreamUtils.concat(
             getCommentsByObjectAfterThan(facebookClient,comment.getId(), startDate, user), comment) : Stream.of(comment))

问题是,即使评论有回复,comment.getCommentCount()总是返回0。

我该如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:4)

更改行

Connection<Comment> commentConnection
            = facebookClient.fetchConnection(objectId + "/comments", Comment.class);

Connection<Comment> commentConnection
            = facebookClient.fetchConnection(objectId + "/comments", Comment.class, Parameter.with("fields","comment_count");

然后你会得到评论的comment_count字段。