【发布时间】:2016-02-09 06:03:57
【问题描述】:
我正在努力处理来自服务器的 20-50k JSON 对象响应,我应该将其插入到我们的 indexeddb 数据存储中。
使用 foreach 重复响应,并添加每一行。响应少于 10k 行的调用工作正常,并在一分钟左右插入。但是当金额变大时,数据库会在一段时间后无响应并返回此错误消息
“db Error err=transaction aborted for unknown reason”
我正在为数据库使用 Dexie 包装器,并为名为 ngDexie 的 dexie 使用角度包装器。
var deferred = $q.defer();
var progress = 0;
// make the call
$http({
method: 'GET',
headers: headers,
url: '/Program.API/api/items/getitems/' + user
}).success(function (response) {
// parse response
var items = angular.fromJson(response);
// loop each item
angular.forEach(items, function (item) {
// insert into db
ngDexie.put('stuff', item).then(function () {
progress++;
$ionicLoading.show({
content: 'Loading',
animation: 'fade-in',
template: 'Inserting items to db: ' + progress
+ '/' + items.length,
showBackdrop: true,
maxWidth: 200,
showDelay: 0
});
if (progress == items.length) {
setTimeout(function () {
$ionicLoading.hide();
}, 500);
deferred.resolve(items);
}
});
});
}).error(function (error) {
$log('something went wrong');
$ionicLoading.hide();
});
return deferred.promise;
我是否有错误的方法来处理一个块中的整个数据?有没有更好的选择?整个过程只在用户打开网站时执行一次。非常感谢所有帮助。目标设备是运行 Android 和 Chrome 的平板电脑。
【问题讨论】:
标签: javascript json angularjs indexeddb dexie