【问题标题】:how to sync web sql database如何同步web sql数据库
【发布时间】:2011-02-03 06:42:30
【问题描述】:

我正在使用 ruby​​ on rails 来开发网站。我希望我的网站可以离线使用。为此,我正在使用 Web SQL 数据库。我想知道如何同步在线和离线数据库。离线数据库由 javascript 创建。 这些是我尝试过的几件事。 为了显示数据库的内容,我将数据放入控制器中的 ruby​​ 对象中,如图所示

  @contacts = Contact.order("contacts.position ASC")

我正在尝试在视图文件中的 javascript 中访问此对象,如下所示

<script type="text/javascript">

var js_obj = <%= @contacts.to_json %>;

</script>

这是正确的方法吗?如何查看 js_obj 变量中的数据

【问题讨论】:

标签: javascript ruby-on-rails json


【解决方案1】:

我会定义 indexedDB 的后备,因为更多的浏览器将实现它(ie9、Chrome 等)

【讨论】:

    【解决方案2】:

    我讨厌内联脚本。话虽如此,在使用离线数据库的情况下,使用返回 .to_json 的方法向控制器发出 ajax 请求本身是不可行的。与其使用 javascript 变量并假设您使用的是已弃用的 Web SQL 数据库,因为它们目前(而且奇怪的是)是离线数据库的最佳支持标准,我会在您的脚本中使用类似的东西(请原谅我可怜的 sql 并保留请注意它正在进行中的工作)。到目前为止,代码无法正常工作,但我认为这个想法是合理的。

    http://jsfiddle.net/Nevraeka/hvT6u/5/

    【讨论】:

      【解决方案3】:

      有一个名为 persistence.js (persistencejs.org) 的项目,它是一个 javascript 对象-数据库映射器,具有独立于数据库的抽象。这样您就不必将您的应用程序限制为 WebSQL 数据库,并且您还可以支持(使用相同的代码)使用本地存储,例如。

      他们还有一个名为persistence.sync 的插件,它将远程数据库与服务器的数据库同步。他们有一个示例后端,但是是为 node.js 编写的。但是,您可以按照他们的说明为 Rails 制作一个。 Rails 服务器端应该类似于this

      另外,如果你决定使用这个库,你应该阅读文档中提到的限制:

      • 同步库按每个对象的粒度进行同步。它不会在每个属性的基础上保留确切的更改,因此可能会引入需要解决的冲突
      • 它不同步多对多关系
      • 未实现错误处理
      • 不支持删除,但也许您可以使用“已删除”标志解决此问题

      【讨论】:

        猜你喜欢
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 2021-07-01
        • 2012-05-08
        • 2018-06-09
        • 1970-01-01
        相关资源
        最近更新 更多