从数据库预存储数据,还是只是需要?

时间:2019-02-20 10:58:07

标签: javascript firebase redux

让我们看看,我们有一个应用程序,用户可以在其中进行项目。他们甚至可以创建数百个项目,每个项目可以包含数百个部分,但只能与一个项目一起工作。我正在用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中,可以是所有项目的容器,也可以只是当前项目的容器。如果我们将它们分开,那么请先调用它,并获取当前项目的初始数据,然后再获取其余项目,这显然将具有更好的用户体验,但我只是想举例说明我的意思。当我们谈论用户有多少项目时,这个问题变得很有趣。如果用户只有两个项目,则可以得到好处,如果用户更改了当前项目,则数据将立即可用。我必须考虑所有数据都将存储在redux中,但是作为一个好点,数据被分离并展平,因此如果项目被更新,当前用户不使用该项目(这是可能的,因为用户共享项目,以便其他用户可以编辑其他项目,但是当前项目也是如此),这不会导致重新渲染。

主要问题是:什么时候值得其获取数据,以便将来使用该数据,但也许不立即使用该数据?哪个更有价值?浏览器内存还是正在获取数据?

1 个答案:

答案 0 :(得分:0)

我将进行一次初始获取“元数据”,以便您可以执行诸如生成项目列表之类的事情。

如果要实时访问其所有项目,则可以使用在后台运行并获取必要位的服务工作者。