【问题标题】:SQL database design issue in android room dbandroid room db中的SQL数据库设计问题
【发布时间】:2021-12-02 10:48:02
【问题描述】:

我正在构建一个应用程序,该应用程序从服务器获取时间线帖子(如在社交媒体应用程序中),将其保存到本地房间数据库并通过分页将它们显示给 UI。我的问题是,在什么条件下,我应该从本地数据库获取帖子?

我尝试过的方法:

  1. 根据帖子 id(主键)降序获取帖子,但在以下情况下失败

假设用户 A 有 2 个帖子。后来,用户 B 创建了 2 个帖子(因此,具有更新的 postId)。现在,当用户 B 关注用户 A 时,后端将以这种格式返回帖子:用户 A 的 2 个帖子 + 用户 B 的 2 个帖子。但是(保存和)基于 postId 降序从本地数据库获取帖子会使用户 B 的帖子出现在用户 A 的时间轴中用户 A 的帖子下方,这似乎不正确。在反向情况下也可以考虑升序。

2.使用数据库中的时间戳列,对应数据库中帖子的插入时间,并根据时间戳获取帖子。但是批量插入的所有帖子都得到相同的值,无论是Instant.now()还是System.currentTimeMillis()

【问题讨论】:

    标签: android sql kotlin android-room social-networking


    【解决方案1】:

    第一个选项是正确的,根据帖子 id(主键)降序获取帖子。 我认为您的情况不正确,请参见示例: 一个帖子 1 , 2 B 职位 3 , 4 B 关注 A,因此他的时间线将根据 postId desc 从本地数据库中获取 4 -> 3 -> 2 -> 1 B 的两个帖子,然后 A 的两个帖子应该是这样的。

    【讨论】:

    • 但事实并非如此。通过 postId DESC 获取帖子将在 B 的帖子下方显示 A 的帖子(从上到下分别为 4、3、2、1)。在这种情况下,我需要先在他的时间线中显示 B 的 2 个帖子(因为他在跟随 A 之前创建了它),然后是 A 的 2 个帖子(因为 B 跟随 A)。
    猜你喜欢
    • 2020-08-27
    • 1970-01-01
    • 2023-03-21
    • 2018-10-26
    • 2020-08-13
    • 2021-01-06
    • 2010-12-12
    • 2021-07-03
    • 1970-01-01
    相关资源
    最近更新 更多