我最近发现(遗憾的是) HTML5不再支持WebSQL,IndexedDB将取而代之。
我想知道是否有类似于使用IndexedDB搜索满足多个条件的条目的方法来查询或搜索SQL的条目。
我已经看到,我可以在KeyRange中使用一个条件来搜索IndexedDB。但是,我似乎找不到任何方法来搜索两列或更多列的数据,除非从数据库中获取所有数据并使用for循环进行搜索。
我知道这是一个在浏览器中几乎没有实现的新功能,但我有一个项目正在启动,我正在研究我可以做到的不同方法。
谢谢!
发布于 2013-03-25 00:16:56
关于同样的问题,请查看this answer。它比我在这里给出的答案更详细。store.createIndex和IDBKeyRange方法can be an array的keypath参数。所以,举个粗略的例子:
// In onupgradeneeded
var store = db.createObjectStore('mystore');
store.createIndex('myindex', ['prop1','prop2'], {unique:false});
// In your query section
var transaction = db.transaction('mystore','readonly');
var store = transaction.objectStore('mystore');
var index = store.index('myindex');
// Select only those records where prop1=value1 and prop2=value2
var request = index.openCursor(IDBKeyRange.only([value1, value2]));
// Select the first matching record
var request = index.get(IDBKeyRange.only([value1, value2]));
发布于 2017-09-05 15:29:39
假设您的SQL查询类似于:
SELECT * FROM TableName WHERE Column1 = 'value1' AND Column2 = 'value2'
JsStore库中的等效查询:
var Connection = new JsStore.Instance("YourDbName");
Connection.select({
From: "YourTableName"
Where: {
Column1: 'value1',
Column2: 'value2'
},
OnSuccess:function (results){
console.log(results);
},
OnError:function (error) {
console.log(error);
}
});
现在,如果您想知道JsStore是什么,让我告诉您它是一个以简化方式查询IndexedDB的库。Click here了解有关JsStore的更多信息
发布于 2012-01-15 11:24:09
我在回答这个问题时提到了一些关于查询关系的建议,这可能会引起人们的兴趣:
Conceptual problems with IndexedDB (relationships etc.)
至于一次查询多个字段,在IndexedDB中看起来没有一种本机方法可以做到这一点(我可能是错的;我还是个新手),但是您肯定可以创建一个帮助函数,对每个字段使用单独的游标,并对它们进行迭代,以查看哪些记录满足所有条件。
https://stackoverflow.com/questions/6405650
复制相似问题