【发布时间】:2014-06-05 22:53:49
【问题描述】:
我有一个具有以下索引的 indexedDb
objectStore.createIndex('course', 'course', {unique: false});
objectStore.createIndex('year', 'year', {unique: false});
objectStore.createIndex('session', 'session', {unique: false});
objectStore.createIndex('rollnumber', 'rollnumber', {unique: false});
objectStore.createIndex('name', 'name', {unique: false});
现在我有一个包含所有上述索引字段的表单。用户填写表格,我必须根据用户填写的任何字段过滤结果。所以如果用户只填写course 和session 字段,那么我必须返回匹配这两个索引的所有对象。
关系版本很简单
SELECT * FROM college WHERE session = ? AND course = ?
我可以根据用户填写的字段准备查询。但是在 indexedDb 中,我需要事先知道组合,这对于这么多不同的可能组合是不可能的。
对于上述情况,需要这样的东西
objectStore.createIndex('courseSession', ['course', 'session'], {unique: false});
除了这不是唯一可能的组合之外,这一切都很好,很漂亮,用户可以填写任意数量的字段来缩小结果范围。那么我该如何实现呢?我不能写出这 5 个字段的 2^5(或其他)可能的组合。
我找到了相关的this 问题。但它并没有解决我不知道我需要的组合的问题,所以我无法提前创建索引。
TL;DR:我事先不知道要“搜索”数据存储区的哪些索引,因此无法创建索引。
【问题讨论】:
标签: javascript html indexeddb