【发布时间】:2013-05-14 16:10:26
【问题描述】:
我尝试按照http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/ 的教程在 IndexedDB 中进行查询,但他们的示例不起作用。
如何在 IndexedDB 中进行 JOIN 类型的查询?我已经为我的对象存储设置了索引,但我似乎无法理解语法?
【问题讨论】:
标签: javascript indexeddb
我尝试按照http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/ 的教程在 IndexedDB 中进行查询,但他们的示例不起作用。
如何在 IndexedDB 中进行 JOIN 类型的查询?我已经为我的对象存储设置了索引,但我似乎无法理解语法?
【问题讨论】:
标签: javascript indexeddb
IndexedDB 是键值(文档)存储。它没有 JOIN 查询或对多个对象存储的查询。但是,您可以在一个事务中查询多个商店。这就是假设如何在 IndexedDB 中进行连接查询。
我有一点使用我的库编写的建模关系http://dev.yathit.com/ydn-db/schema.html。
这里是SELECT * FROM Supplier, Part WHERE Supplier.CITY = Part.CITY的加入查询。
var iter_supplier = new ydn.db.IndexValueIterator('Supplier', 'CITY');
var iter_part = new ydn.db.IndexValueIterator('Part', 'CITY');
var req = db.scan(function(keys, values) {
var SID = keys[0];
var PID = keys[1];
console.log(SID, PID);
if (!SID || !PID) {
return []; // done
}
var cmp = ydn.db.cmp(SID, PID); // compare keys
if (cmp == 0) {
console.log(values[0], values[1]);
return [true, true]; // advance both
} else if (cmp == 1) {
return [undefined, SID]; // jump PID cursor to match SID
} else {
return [PID, undefined]; // jump SID cursor to match PID
}
}, [iter_supplier, iter_part]);
在Join query article上查看更多详情。
【讨论】:
$scope.myResult = ??