我知道每个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相同。 ....
但是......没有人认为对象存储过滤器可能是必要的?
感谢
答案 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]
});
}