【问题标题】:IndexedDB index concept?IndexedDB 索引概念?
【发布时间】:2014-05-05 22:12:28
【问题描述】:

我对 IndexedDB 背后的概念进行了大量研究,但我很难理解它如何应用于我的应用程序。

我有很多关键字要存储在 IndexedDB 中。一些关键字是针对汽车的,而另一些是针对水果的。现在我的应用程序使用正则表达式来匹配关键字并返回字符串是否与汽车和/或水果有关。我猜我必须使用一个包含汽车关键字的表达式和另一个包含水果关键字的表达式(我从 IndexedDB 中提取)。

我的问题是我应该如何构建我的 IndexedDB?

MyApp (db) > Keywords (table) > { keyword: Honda (value), category: Cars }
MyApp (db) > Keywords (table) > { keyword: Apple (value), category: Fruits }

然后:

objectStore.createIndex('category');

然后根据关键字值搜索它是否匹配 Cars 或 Fruits 以返回与该主题相关的关键字列表。

如果这是构建我的数据库的正确方法,或者我应该为汽车和水果建立一个单独的表,有人可以向我解释一下吗?

【问题讨论】:

    标签: javascript indexeddb


    【解决方案1】:

    如果您已经在列表中有keywords,并且您需要查询数据库以检查category 是什么值,那么我建议您在keyword fieldindex 您的数据库,这样你会有最好的表现。

    objectStore.createIndex('keyword');
    

    如果您使用 category 索引,则需要使用光标遍历所有项目,这会比较慢,因为多个对象属于同一类别。

    此外,如果您的关键字列表可以同时包含carsfruits,那么您需要将所有对象保存在同一个表中,否则您可以将数据拆分为更多表以获得更快的性能。

    【讨论】:

    • 谢谢!我最终使用 multiEntry: true for the keywords.
    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2011-08-21
    • 2011-04-29
    • 2016-09-07
    • 2012-11-28
    相关资源
    最近更新 更多