javascript - 从数据库中预存储数据,或者只是必要的?
问题描述
让我们看看,我们有一个用户有项目的应用程序。他们甚至可以创建数百个项目,每个项目可以有数百个部分,但只能与一个项目一起工作。我正在使用 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 中,但作为一个好点,数据是分离和扁平化的,所以如果项目得到更新,当前用户没有使用(这是可能的,因为用户共享项目,所以另一个用户可以编辑另一个项目,但当前项目也是如此),它不会导致重新渲染。
主要问题是:什么时候值得它获取数据,这些数据可以在未来使用,但也许不是,让它立即可用?哪个更有价值?浏览器内存,还是获取数据?
解决方案
我会做一个初始传递来获取“元数据”,这样你就可以做一些事情,比如生成一个项目列表等等。
如果用户体验是实时访问他们的所有项目,您可以使用在后台运行并获取必要位的服务工作者。
推荐阅读
- php - xamp 正在显示 htdocs 文件/文件夹,但在打开文件/文件夹时显示错误
- c++ - 将 2 个欧拉角与 GLM 结合起来的问题
- machine-learning - 如何使用权重在逻辑回归中获得特征重要性?
- django - 使用 django 中的函数将表单数据发布到 url
- java - 在 Java 中需要关联数组的 HTTP Post
- php - 在 Moodle 3.5 中添加新用户时出错
- php - PHP 变量包含带有动态 src 的 iframe?
- analytics - 对可以修改的分析柱状数据库有什么建议吗?
- android - 配置从横向更改为纵向后,片段仍然存在(或重新创建)
- xamarin.forms - c# - 如何从 FTP 设置图像的图像源