【问题标题】:Best way to periodically save javascript client data to server database and stay in sync?定期将javascript客户端数据保存到服务器数据库并保持同步的最佳方法?
【发布时间】:2018-10-18 22:54:34
【问题描述】:

我使用 javascript 库 D3 创建了一个应用程序。用户会不断地单击和拖动以频繁更改图形元素,我目前将数据保存在 3-4 个本地 javascript 对象和数组中。我想定期将数据保存到服务器,而不是在每次更改之后。另外,我希望他们能够在未连接的情况下工作。从二十年前开始,我想象手动执行此操作,在客户端记录被标记为“新”、“修订”和“已删除”。每 10 秒通过 AJAX 保存客户端数据,并更新对象或执行 SQL 语句。从数据库返回一个 id 并保存在客户端,以跟踪每条记录以供将来修改。

请注意,数据必须在数据库中组织,以便于分离元素以供重用。当用户连接时,每 5-10 秒更新一次就可以了。然后我可以使用便宜且速度慢的服务器。当然,处理可能没有完全更新的记录的工具是好的,也许是一些事务功能。

不会有单独的移动应用程序。如果需要,我可以将我的 javascript 对象修改为 json 兼容。我看到有“离线优先”框架和 javascript“状态容器”。 Redux 引起了我的注意,尤其是当我根据 Google 趋势看到它的使用多年来不断攀升时。我已经阅读了很多选项,并且对所有这些都感到非常困惑。这是我查看的工具的混搭:Store.js、now.js、indexedDB、couchDB、pouchDB、Cloudant、localForage、WebSQL、Polymer App Toolbox、Hoodie 框架、Ionic 和 Angular 以及 Loopback。更不用说 XHR、网络套接字了。

我使用过 Laravel 和 Zend 等 MVC,它们都使用 PHP 和 MySql。我想知道我是否可以整合建议的解决方案。谢谢。

Related: How do I sync data with remote database in case of offline-first applications?

【问题讨论】:

    标签: javascript redux couchdb offline progressive-web-apps


    【解决方案1】:

    使用 PouchDb 将数据保存在本地,然后在网络连接可用时将其与 CouchDb 数据库(或 IBM 的 Cloudant 服务)同步,这是满足此类需求的常用途径。但是您的问题是征求意见,因此会有许多其他完全有效的解决方案。

    【讨论】:

    • 感谢 Ian,PouchDb 看起来可能是最好的解决方案。 Hoodie 旨在更容易,但它是一个完整的框架,可能过于严格。这听起来很有希望Limit records synchronized in PouchDB/CouchDB
    • 我现在已经在几个项目中使用了 PouchDb - 它有据可查(例如this 很有帮助),并且对于新手来说学习曲线不会太陡峭。祝你好运!
    • 到目前为止一切顺利。该示例很棒,因为它完整且有效。易于以一种方式或间歇性同步。有plugins 用于身份验证和关系数据。 Authentication with Laravel 看起来很有希望。现在我必须理解并应用代码示例。我知道这是要走的路。
    • 我在 AWS(亚马逊网络服务)上使用 bitnami.com,但您可以使用各种 bitnami cloud providers。您会看到与本地安装 couchDB 时相同的 Fauxton 界面。
    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2017-01-26
    • 2010-11-04
    • 2014-09-30
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多