求指教leancloud实现论坛的一些问题

新手上路,请多包涵

android, 基于leancloud搭了个论坛。 由于之前一直是基于mysql的开发, sql语句直接获取数据包,拿下来解析用就好了。leancloud的使用有些懵, 高手勿怪,请多指教。

1、帖子 - 评论, 是在帖子中建一个评论的relation 还是 array ?
每个评论中有用户的pointer, 我怎么快速获取某个用户回复的帖子(去重复,用户可能在一个帖子中回复多次)?

我的实现:
topic表中建了reply的relation, 在reply表中建了一个冗余的topic pointer, 之后过滤reply表的creator来过滤出list, 再遍历这个list过滤出不重复的topic。

List<Reply> replies = q.find();
List<Topic> topics = new ArrayList<Topic>(); //返回这个list
for (Reply reply : replies) {   
    Topic topic = reply.getAVObject("topic");
    if (topic!=null && !topics.contains(topic)){
        topics.add(topic);
    }
}

这样很笨重, topic表中已经有reply的relation, 再在reply中建一个topic的pointer有点多余。reply表中数据将很多, 每次都从reply里查肯定会影响效率。
求指教直接从topic表查询的实现。还是说在user里建冗余的topic 和 reply的relation(array?)比较合适?

2、帖子 - 赞, 是在帖子中建一个用户的ralation还是array?
怎么快速获取 这个帖子 某个用户是否点过赞?

我的实现:
在topic表里放likers的relation,链向_user, 通过getRelation获取AVRelation, find得到AVUser的list, 再查找是否含指定的AVUser。
用户点赞时, 是获取AVRelation之后用add去添加。
求指教这样实现是否合适

另外, 请教下 relation 和 array, 从官方文档中,能用limit、skip来控制relation的记录获取数实现分页, array的貌似没有, 只看到一个getlist的方法来获取全部, 有办法控制么?
array的addunique是不是比relation的添加数据高效些?

阅读 3.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进