【发布时间】:2016-04-01 21:57:00
【问题描述】:
我了解 indexedDB 没有 findOne 或 find 函数(如 MongoDB 那样),但我想要完成的与这些函数类似。
我在 indexedDB 中有一个数据存储。我使用 stop_id 在商店上创建了一个索引。
我想在商店中查找所有带有stop_id 的文档。多个对象可能有一个 stop_id 值。
我有什么:
我有点作弊(如果有更好的方法请纠正我)
// this function is called from html via angularjs
$scope.findOne = function(stop_id) {
var db;
var request = indexedDB.open("Trans");
request.onerror = function(event) {
alert("Couldn't connect to Database");
};
request.onsuccess = function(event) {
db = event.target.result;
var objectStore = db.transaction("times").objectStore("times");
var index = objectStore.index("stop_id");
var range = IDBKeyRange.only(stop_id);
// call something here to retrieve
// One or All documents with the ID of stop_id
// passed in from the html
}
}
然后我想这样调用 html:
<div class="medium-6 columns" ng-repeat="stops in objects | orderBy: 'stop_name'">
<div class="card hoverable">
<div class="content">
<span class="title">{{stops.stop_name}}</span><small class="float-right">{{stops.stop_id}}</small>
<!-- this function will search another object store, then retrieve all documents matching the stop_id -->
{{ findOne(stops.stop_id)}}</p>
</div>
</div>
</div>
我正在考虑上述方法,因为 indexedDB 不支持本机连接,我希望使用本机 indexeddb 变通办法来实现在另一个数据存储中即时检索与 id 相关的额外数据。性能不是问题。两个数据存储文档都不会超过 150 项。
【问题讨论】:
标签: javascript angularjs indexeddb