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的添加数据高效些?