【问题标题】:How to create an index for a table in indexedDB using JayData如何使用 JayData 为 indexedDB 中的表创建索引
【发布时间】:2012-11-02 07:08:57
【问题描述】:

我们一直在尝试将JayData 作为针对多个平台和设备的 HTML5 Web 应用程序中多个数据提供者的抽象层。

我们也一直在使用Linq2IndexedDB library 并取得了一定的成功,并且使用该库我们能够为表创建索引。但到目前为止,我们无法弄清楚如何使用JayData IndexedDB provider 来执行此操作,或者是否支持。

有人可以展示如何使用 JayData 为使用 JayData 的 indexedDb 表创建索引吗?

【问题讨论】:

  • 我查看了我们自己的网页,了解我们自己的 indexdb 提供商,该网页很旧并且包含过时的信息。很抱歉,我们会尽快更新,同时请查看我们的博文(jaydata.org/blog 和 jaystack.com/blog)了解最新消息。

标签: javascript html indexing indexeddb jaydata


【解决方案1】:

我可以确认,对指数的支持正在进行中 - 预计会在今年发布。不仅适用于 IndexedDB,也适用于 WebSQL/sqlite 和 mongoDB。在索引的帮助下,2013 年第一季度,indexeddb 和 mongodb 等基于键的商店的导航属性将得到支持。

关于事务:当使用 saveChanges 保存一组更改时,一切都被视为一个(逻辑)事务。如果提供程序支持回滚,则保存任何项目时出错将恢复同一批次中的任何先前更改。作为示例,请参见:webSQL transactions with JayData

@Kyaw Tun 请指出 indexedDB 对 JayData 不重要的文档,我们必须修改它,谢谢。我检查你的图书馆

【讨论】:

  • 对不起,如果我确实冒犯了。我不喜欢新兴浏览器标准 IndexedDB 上的 FUD。以下关于stackoverflow.com/questions/tagged/indexeddb 的说法不正确:Vastly inferior to WebSQL, IndexedDb is yet to see wide adoption by vendors. these are not autodetected. This is an internal and intentional limitation of IndexedDb itself. it does not support filtering, projections or paging, so the full entityset must be retrieved each time. 支持分页和过滤。
  • 启动 IndexedDB 的一个原因是 WebSQL 的性能不佳。您应该将文档语调更改为 IndexedDB。有许多 Web 开发人员没有时间阅读 IndexedDB API。像你的文档那样草率下结论是没有帮助的。
  • IndexedDB API 非常冗长,但它是为了事务和效率。没有其他办法。这并不意味着 API 不好。 IndexedDB 中的所有查询都可以通过适当的索引进行。
  • 顺便说一句,在浏览器中进行内存操作是我听过的最糟糕的主意。如果某事不可靠,请不要这样做。
  • 无意冒犯,我真的很想知道我们的网站在哪里声明了这一点。现在您将我指向该页面,我可以改变我们的意图,即为 indexeddb 带来尽可能多的功能。现在 chrome 和 IE10 已经支持它了 - 现在是有意义的。
【解决方案2】:

从他们的文档来看,Jaydata 认为 Indexeddb 不值得成为高效的数据库。显然他们忽略了 indexeddb 最重要的两个特性:索引和事务。但是正确使用 Indexeddb 比 websql 更快。

试试我的库https://bitbucket.org/ytkyaw/ydn-db/overview,它非常喜欢 indexeddb 以及使用它属性的许多技巧。

【讨论】:

  • 感谢您的回复,但我不是在寻找单独处理 indexedDb 的库。
  • 我没有检查 lib 本身,我是根据您在此处发布的答案说话。我将评估您的库,看看它是否符合我们的需求。感谢您的建议...
  • 我试过你的图书馆,很抱歉文档真的很差!在花了一整天试图自己弄清楚事情之后,我放弃了......
  • 这是一个年轻的项目。文档和实现不匹配。查看单元测试文件或源代码。如果一整天都想不通,我认为不值得使用这样的库。一个库必须足够容易使用,无需阅读手册。
  • 我同意。部分原因是 Closure 对我来说是新的,尽管我必须说它类似于 jQuery(至少与 deferred 和所有)。无论如何,我希望这会演变成一个非常好的图书馆,我有一天可以回到它。 :)
【解决方案3】:

我是开发 linq2indexeddb 库的人。如果您对我的库有一些问题,您可以随时告诉我。我会看看它。此外,如果您想支持更多浏览器(使用 WebSQL 的浏览器),您可以将indexeddb shim 添加到您的项目中。这是在 WebSQL API 之上使用 indexeddb API 的垫片。我与 shim 的开发人员密切合作,因此我的 lib 也支持这一点。

【讨论】:

  • 我们知道垫片在那里,但也许我们没有按照推荐的方式使用它。我将再看一下尝试使用 linq2indexeddb 将提供程序特定代码抽象到一个可维护层中。谢谢@KristofDegrave
  • 恐怕我无法让 shim 工作 - 即使您在 users.telenet.be/kristofdegrave 的样本似乎也被 Safari 破坏了
  • 看起来,您在使用最新版本的 shim 时遇到了一些集成问题。也许我应该只使用您提供的 shim 版本……让我试试吧!
  • 给你发了几条推文
  • 我见过他们过去 :)。您始终可以在 codeplex 上针对您遇到的问题创建问题。我会尽我所能尽快解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
相关资源
最近更新 更多