【发布时间】:2017-02-19 19:37:55
【问题描述】:
我在我的应用程序中使用bramski/angular-indexedDB。基本的 CRUD 操作工作正常,但自定义查询没有按预期工作。 我正在使用代码
angular.module('myModuleName', ['indexedDB'])
.config(function ($indexedDBProvider) {
$indexedDBProvider
.connection('myIndexedDB')
.upgradeDatabase(1, function(event, db, tx){
var objStore = db.createObjectStore('people', {keyPath: 'ssn'});
objStore.createIndex('name_idx', 'age', {unique: false});
objStore.createIndex('name_idx, age_idx', ['name', 'age'] , {unique: false});
});
基本查询操作如下所示
$indexedDB.openStore('people', function(x){
var find = x.query();
find = find.$eq('John');
find = find.$index("name_idx");
x.eachWhere(find).then(function(e){
$scope.list= e;
});
});
以下查询结果。
select * from people where name='John'
但是,在上述场景中,我们如何执行自定义查询,例如
select * from people where name='John' and age='25';
delete from people where name='John' and age='25';
【问题讨论】:
-
查看该提供程序的源代码,该提供程序似乎只针对单个键执行查询。看来您必须修改该提供程序的来源并编写自己的多键查询函数,或者在客户端编写过滤器以排除额外数据。
-
对不起,我是 indexeddb 的新手。我们不能使用配置的索引组合来获取这些详细信息吗?即 objStore.createIndex('name_idx, age_idx', ['name', 'age'] , {unique: false});