会议室数据库中的关系

时间:2018-09-23 13:42:55

标签: android sqlite kotlin android-room

我在我的应用中发布的大家好,每个帖子都可以包含评论和对这些评论的回复。

我正在显示帖子上写的最后一条评论(如果有的话),并显示对该评论写过的两份回复(有评论)。

问题是当我将它们存储在Room中时,我想将每个帖子,评论和答复存储在一个单独的表中,我在数据库模式中添加了外键,但是当我想使用它们来检索它们时就出现了问题RxJava我遇到了回调地狱,甚至无法正常工作。

dataManager.getPostsFromDatabase().subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe { it ->
                Log.d("yyyyyyyy", "posts size ${it.size}")
                it.forEach { postData ->
                    Log.d("yyyyyyyy", "post id ${postData.id}")
                    dataManager.getCommentFromDatabase(postData.id).subscribeOn(Schedulers.io())
                            .observeOn(AndroidSchedulers.mainThread())
                            .subscribe { comment ->
                                Log.d("yyyyyyyy", "post comment id ${comment.id}")
                                postData.last_comment = comment
                                dataManager.getRepliesFromDatabase(comment.id).observeOn(AndroidSchedulers.mainThread())
                                        .subscribeOn(Schedulers.io())
                                        .subscribe { replies ->
                                            Log.d("yyyyyyyy", "replies count ${replies.size}")
                                            postData.last_comment?.replies = replies

                                        }

                            }
                    list.add(postData)
                }
            }

有什么想法吗?

0 个答案:

没有答案