创建“表格”的想法只能选择一些字段来查询?

时间:2014-01-17 16:23:53

标签: indexeddb

我知道每个objstore中的indexeddb存储'对象'。 我正在使用光标,有或没有键范围。 是否可以只检索一些“字段”?

也就是说,类似于“SELECT field1,field2”,只有一些字段。

我的主要问题......我正在为每件物品保存一张图片。

object1 : field1, field2, .... image ... fieldn
object2 : field1, field2, .... image ... fieldn
...
objectn : field1, field2, .... image ... fieldn

我想进行初步查询以检索除图像之外的所有“字段”(或某些字段)。

我的想法是只检索我需要的数据。

如果不是......解决这个问题的“诀窍”是什么? 创建“并行”对象库?

任何帮助都将不胜感激。

感谢。

我将使用objectstore1_a和objectstore1_b来播放分隔的字段信息,但保存的ID相同。 ....
但是......没有人认为对象存储过滤器可能是必要的? 感谢

4 个答案:

答案 0 :(得分:0)

我建议使用两个对象存储。

答案 1 :(得分:0)

无法检索部分内容。对indexeddb的所有读/写都已完整。

答案 2 :(得分:0)

实际上你可以编写自己的方法来做到这一点。目前我正在我的MostachoDB库中为我的论文工作。

function getSpecificFields(o, fields) {
        var tmpo = {};
        for(var key in o) {
            if(o.hasOwnProperty(key) && (fields.indexOf(key) > -1 || fields == '*'))
                tmpo[key] = o[key];
        }
        return tmpo;
    };

如果与cursor混合,这应该可以解决问题。

答案 3 :(得分:0)

复合索引可用于投影查询,例如:

objectStore.createIndex('proj_index', ['id', 'field1', 'field2'])

然后查询

// SELECT field1, field2 WHERE id = id1
var kr = IDBKeyRange.bound([id1], [id1, '\uffff], false, true);
objectStore.index('proj_index').get(kr).onsuccess = function(e) {
  var comp_key = e.target.result;
  callback({
     'field1': comp_key[1],
     'field2': comp_key[2]
  });
 }