刚读了你的帖子,我不得不说我非常喜欢你的方法,它预示着许多 Web 应用程序将来可能会工作的方式,包括本地存储(用于断开状态)和在线存储(主数据库 - 到将所有客户记录保存在一个地方并同步到其他客户端设备)。
以下是我的回答:
1)在服务器上存储 JSON:我不确定我是否会将对象存储为 JSON,如果您的应用程序非常简单,则可以这样做,但这会妨碍使用数据的工作(运行报告并批量发送电子邮件)以工作为例)。我更愿意使用 JSON 自己传输信息,并使用 SQL 数据库来存储它。
2) NoSQL 方法:我想你已经回答了你自己的问题。我的首选方法是现在设置一个 SQL 数据库(如果所需的额外资源不是问题),这样您就可以节省一些为 NoSQL 设置数据访问层的工作,因为您可能不得不删除它在将来。如果您不想要功能齐全的 RDBMS,SQLite 是一个不错的选择。
如果写一个 schema 太麻烦,你还想把 JSON 保存在服务器上,那么你可以散列一个 JSON 对象管理系统,用一个表并在服务器端进行一些解析以返回相关记录。这样做会比保存/删除文件更容易并且需要更少的权限。
3)安全性:您提到目前没有用户输入:
“对于这个用例,用户无需输入任何内容”
但是在问题的开头,您还提到用户可以
“在一台机器上工作,保存,然后在另一台机器上加载他们的东西”
如果是这种情况,那么您的应用程序将存储用户数据,您没有为他们提供一个很好的 GUI 并不重要,您将不得不从多个角度担心安全性,JSON.parse
或者类似的工具只能解决问题的一半(客户端)。
基本上,您还必须检查服务器上 POST 请求的内容,以确定发送的数据是否有效和真实。在保存到数据存储之前,需要在服务器上验证 JSON 对象(或您要保存的任何数据)的完整性(使用 php 或其他类似语言),这是因为有人可以轻松绕过您的 javascript 层“安全”并篡改 POST 请求,即使您不打算这样做,然后您的应用程序无论如何都会将恶意输入发送到客户端。
如果你整理了服务器端的东西,那么JSON.parse
在防止 JS 注入方面就有点过时了。拥有额外的层仍然不错,特别是如果您依赖远程网站 API 来获取一些数据。
希望这对你有用。