首页 > 解决方案 > 从数据库中预存储数据,或者只是必要的?

问题描述

让我们看看,我们有一个用户有项目的应用程序。他们甚至可以创建数百个项目,每个项目可以有数百个部分,但只能与一个项目一起工作。我正在使用 firebase 对其进行实时提取,如下所示:

/*
projectsOfUser = {
  projectOne: {
    // hundreds of attributes
  },
  projectTwo: {
    //hundreds of attributes
  },
  //hundreds of projects (probably not, but it's possible)
}
*/
const listenProjectChanges = () => async dispatch => {
  projectsdb.on("value", snap => {
    const projects = snap.val();

    dispatch({
      type: "PROJECTS_SET",
      projects
    });
  });
};

在上面的代码中projectsdb可以是所有项目的容器,也可以是当前项目的容器。如果我们把它们分开,那么先调用,并获取当前项目的初始数据,然后获取其余项目显然会有更好的UX,但我只是想举例说明我的意思。当我们谈论用户有多少项目时,这个问题变得很有趣。如果用户只有两个项目,我们得到的好处是,如果它改变了当前项目,数据将立即可用。我必须考虑所有数据都将存储在 redux 中,但作为一个好点,数据是分离和扁平化的,所以如果项目得到更新,当前用户没有使用(这是可能的,因为用户共享项目,所以另一个用户可以编辑另一个项目,但当前项目也是如此),它不会导致重新渲染。

主要问题是:什么时候值得它获取数据,这些数据可以在未来使用,但也许不是,让它立即可用?哪个更有价值?浏览器内存,还是获取数据?

标签: javascriptfirebaseredux

解决方案


我会做一个初始传递来获取“元数据”,这样你就可以做一些事情,比如生成一个项目列表等等。

如果用户体验是实时访问他们的所有项目,您可以使用在后台运行并获取必要位的服务工作者。


推荐阅读