想象一下,我的数据库中有许多条目(例如,用户)。我还有两条路线,一条用于列表,另一条用于详细信息(您可以在其中编辑条目)。现在我正在努力解决如何处理数据结构。
我正在考虑两种方法以及两者的结合。
共享数据集
- 我导航到
/list
,我所有的用户都是从存储在 redux 商店中的 api 下载的,在 key 下users
,我还添加了一些users_offset
和users_limit
只呈现列表的一部分 - 然后我导航到
/detail/<id>
,并存储currently_selected_user
为<id>
val ... 这意味着我将能够使用类似这样的东西获取用户的数据users.find(res => res.id === currently_selected_user)
- 更新也很简单,因为我只使用一个数据集和指向它的细节
- 添加新用户也很容易,同样只需使用相同的用户列表
现在我对这种方法的问题是,当用户列表变得庞大(比如数百万)时,下载可能需要一段时间。而且,当我直接导航到 时/detail/<id>
,我还没有下载所有用户,所以要获取我需要的数据,我必须先下载整个内容。数以百万计的用户只是为了编辑一个。
分离的数据集
- 我导航到
/list
,而不是从 api 下载我的所有用户,我只下载其中几个,具体取决于我的users_per_page
和users_current_page
将设置的内容,我可能会将数据存储为users_currently_visible
- 然后我导航到
/detail/<id>
,存储currently_selected_user
为<id>
val ......而不是搜索,users_currently_visible
我只是从 api 下载用户的数据 .. - 在更新时,我不会
users_currently_visible
以任何方式更新 - 我也不会添加
我在这里看到的可能问题是,我必须在访问/list
时再次从 api 下载数据,因为它可能与数据库中的内容不同步,我也可能不必要地详细下载用户数据,因为它们可能已经在我的体内users_currently_visible
某种科学怪人的恶作剧
- 我详细说明,我在分离数据集中执行相同的操作,但不是直接从 api 下载用户数据,而是首先检查:
- 我有吗
users_currently_visible
- 如果是这样,他们之间是否有使用我的 ID 的用户?如果两者都为真,则我将其用作我的用户数据,否则我进行 api 调用
- 我有吗
- 更新时也会发生同样的情况,我检查我的用户是否存在,
users_currently_visible
如果存在,我也会更新该列表,如果不存在,我什么也不做
这可能会起作用,但并不觉得这是正确的方法。我可能还需要users_currently_visible
在访问时下载新的列表/list
,因为我可能已经添加了一个新列表。
有没有粉丝最喜欢的方法?...我敢肯定每个 redux 用户都遇到过同样的事情。
谢谢!