我正在构建一个功能齐全的Web应用程序.当然,您可以在处于“离线”模式时保存到本地数据存储区.我希望能够跨设备同步,这样人们就可以在一台机器上工作,保存,然后在另一台机器上工作并加载他们的东西.
@H_301_2@问题是:
@H_301_2@1)将json存储在服务器上是一个坏主意吗?为什么要将服务器上的json解析为模型对象,当它将作为json传递回(其他)客户端时?
@H_301_2@2)我不确定我是否想尝试使用Nosql技术.我没有打破json,因为现在数据库中唯一的关系是从用户帐户到他们的条目.除了用户数据之外,域模型将是一个String,它是json.建议欢迎.
@H_301_2@从理论上讲,将来我可能想在服务器上进行一些处理或建立更复杂的关系.换句话说,现在我只是在保存json,但在将来我可能想要一个更传统的关系系统. Nosql方法会妨碍这个吗?
@H_301_2@3)这有什么安全问题吗?以JS注入为例?从理论上讲,对于这个用例,用户至少现在无法输入任何内容.
@H_301_2@先感谢您.
@H_301_2@编辑 – Thanx的答案.我选择了我的答案,因为它详细介绍了Nosql的优点和缺点.
解决方法
SERVER上的
JSON
@H_301_2@将JSON存储在服务器上并不是一个坏主意,特别是如果你使用像MongoDB或CouchDB这样的nosql解决方案.两者都使用JSON作为其原生格式(MongoDB实际上使用BSON,但它非常相似).
@H_301_2@nosql方法:假设CouchDB作为存储引擎
@H_301_2@>烘焙复制和并发处理
>非常简单的Rest API,使用HTTP与数据库通信.
>将数据本地存储为JSON,而不是存储在blob或文本字段中
>强大的查看/查询引擎,可以让您继续增加文档的复杂性
>离线模式.您可以使用javascript直接与CouchDb交谈,如果互联网不可用,整个应用程序将继续在客户端上运行. @H_301_2@安全 @H_301_2@确保使用浏览器JSON.parse或安全的Javascript库(json2.js)解析JSON文档. @H_301_2@结论 @H_301_2@我认为我建议在这里使用nosql的原因,尤其是CouchDB,是因为它将为你处理所有困难的东西.复制将很容易进行设置.您不必担心并发等问题. @H_301_2@也就是说,我不知道你正在构建什么样的应用程序.我不知道你们与客户之间的关系是什么,以及让他们将CouchDB放在他们的机器上是多么容易. @H_301_2@链接 @H_301_2@> CouchDB @ Apache
> CouchOne
> CouchDB the definitive guide
> MongoDB @H_301_2@更新: @H_301_2@在查看应用程序后,我认为CouchDB不会是一个很好的客户端选项,因为您不会要求人们安装数据库引擎来播放soduku.也就是说,我仍然认为它是一个很好的服务器端选项.如果您想将服务器CouchDb实例与客户端同步,您可以使用类似BrowserCouch的东西,这是用于本地存储的CouchDB的JavaScript实现.
>非常简单的Rest API,使用HTTP与数据库通信.
>将数据本地存储为JSON,而不是存储在blob或文本字段中
>强大的查看/查询引擎,可以让您继续增加文档的复杂性
>离线模式.您可以使用javascript直接与CouchDb交谈,如果互联网不可用,整个应用程序将继续在客户端上运行. @H_301_2@安全 @H_301_2@确保使用浏览器JSON.parse或安全的Javascript库(json2.js)解析JSON文档. @H_301_2@结论 @H_301_2@我认为我建议在这里使用nosql的原因,尤其是CouchDB,是因为它将为你处理所有困难的东西.复制将很容易进行设置.您不必担心并发等问题. @H_301_2@也就是说,我不知道你正在构建什么样的应用程序.我不知道你们与客户之间的关系是什么,以及让他们将CouchDB放在他们的机器上是多么容易. @H_301_2@链接 @H_301_2@> CouchDB @ Apache
> CouchOne
> CouchDB the definitive guide
> MongoDB @H_301_2@更新: @H_301_2@在查看应用程序后,我认为CouchDB不会是一个很好的客户端选项,因为您不会要求人们安装数据库引擎来播放soduku.也就是说,我仍然认为它是一个很好的服务器端选项.如果您想将服务器CouchDb实例与客户端同步,您可以使用类似BrowserCouch的东西,这是用于本地存储的CouchDB的JavaScript实现.