如何检查 ydn.db 数据库是不是可以使用?
Posted
技术标签:
【中文标题】如何检查 ydn.db 数据库是不是可以使用?【英文标题】:How do I check if ydn.db database is ready for use?如何检查 ydn.db 数据库是否可以使用? 【发布时间】:2015-02-05 20:19:09 【问题描述】:我可以成功创建 indexeddb 数据库并将数据加载到其中。我还可以从同一页面从该数据库中读取数据。然后我尝试从我网站上的另一个页面读取数据库。
db = new ydn.db.Storage('test');
db.keys('items').done(function(d)
alert(d);
);
这不起作用。我只是得到一个空的结果。但是,如果我将上述代码直接输入到 Chrome 的 javascript 控制台中,它确实可以工作。环顾四周后,似乎数据库可能还没有准备好。所以我试试这个。
db = new ydn.db.Storage('test');
db.addEventListener('ready', function()
db.keys('items').done(function(d)
alert(d);
);
);
然而,这在控制台中给了我以下错误。
Uncaught TypeError: undefined is not a function
以下代码行显示错误。
db.addEventListener('ready', function()
我不确定我在这里缺少什么。
【问题讨论】:
【参考方案1】:打开数据库连接是一个异步操作。这个ready
事件监听器在数据库连接并且在必要的模式改变之后被调用。这是数据库实例进行的第一个异步函数调用。
如果数据库打开失败,则使用error
事件对象调用回调。可以添加多个监听器。重度数据库写入操作应在此就绪事件处理程序之后调用。或者ready
事件可以通过DOM
事件侦听器模式进行侦听。
您可以以类似的方式添加数据库就绪事件侦听器:
var db = new ydn.db.Storage('test');
db.onReady(function(e)
if (e)
if (e.target.error)
console.log('Error due to: ' + e.target.error.name + ' ' + e.target.error.message);
throw e;
db.put('statement1', large_data);
);
【讨论】:
以上是关于如何检查 ydn.db 数据库是不是可以使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 JSON 文件数据索引子对象属性并在 YDN DB 中编写搜索查询