【发布时间】:2014-04-12 01:04:09
【问题描述】:
我在 Angular 服务中打开一个 IndexedDB:
MyApp.factory '$database', ->
database = null
request = indexedDB.open 'myApp', '1'
request.onerror = (e) ->
console.log e
request.onsuccess = (e) ->
database = e.target.result
该服务还有一个方法可以返回某个集合中的所有记录:
all: (collection, resultsCallback) ->
request = database.transaction... (omitted for brevity)
这里的问题是,当我的页面加载时,控制器将从数据库中获取所有记录。但是有可能IndexedDB的成功回调还没有被调用,所以数据库是null。
查看https://github.com/webcss/angular-indexedDB/blob/master/src/indexeddb.js 的代码,似乎每次查询都会再次打开数据库,并在成功回调中执行查询。
我不确定这是否完全合适。虽然这可以解决我遇到的问题,但这不会留下很多与数据库的悬空连接吗?每次需要执行查询时都可以打开连接吗?
如果不是,那么 Angular 中的合适解决方案是什么?
【问题讨论】:
标签: javascript html angularjs coffeescript