我已经在第一页加载了我所有的数据:
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
<script src="/Scripts/ydn.db-jquery-0.7.5.js" type="text/javascript"></script>
<script src="/Scripts/jquery.mousewheel.js"></script>
...
var schema = {
stores: [{
name: 'products',
keyPath: 'cdProduto',
autoIncrement: false,
indexes: [
{
keyPath: 'cdCategoria'
}, {
keyPath: 'dtUltimaAtualizacao'
}]
}]
};
var db = new ydn.db.Storage('db-test', schema);
db.clear().done(function (num) {
db.add('products', [<%=jsonProducts%>]);
});
<%=jsonProducts%>从C#后端打印一些json。
我可以像这样加载信息,它起作用:
db.get('products', '2').always(function (record) {...
之后,在同一个浏览器和会话中,当我尝试加载我的第二个页面(/catalogo.html)时,然后用'2‘键加载相同的产品,如下所示:
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
<script src="/Scripts/ydn.db-jquery-0.7.5.js" type="text/javascript"></script>
<script src="/Scripts/jquery.mousewheel.js"></script>
...
var db = new ydn.db.Storage('db-test');
db.get('products', '2').done(function (value) {
console.log(value);
});
它在控制台上返回“未定义”。我没有线索。
此外,im在两个页面上都使用html缓存清单。
<html manifest="/home/manifest">
并在本地服务器下进行测试,例如使用本地主机和端口60873进行访问。
我是不是遗漏了什么?这不是打开现有的YDN-DB的正确方式吗?
谢谢!
发布于 2013-08-12 18:57:59
你没有遗漏任何东西,它应该有效。您应该检查dev控制台资源面板上的indexeddb内容。
您应该在第二页/catalogo.html中初始化,与第一页完全相同,即,
var db = new ydn.db.Storage('db-test', schema);
更改架构--我会删除一些表。这种数据丢失是在不满足数据库约束时发生的。它可以由库或浏览器本身触发。
在使用之前检查数据库连接是一个很好的做法,如下所示:
db.addEventListener('ready', function (event) {
var is_updated = event.getVersion() != event.getOldVersion();
if (is_updated) {
console.log('database connected with new schema');
} else if (isNaN(event.getOldVersion())) {
console.log('new database created');
} else {
console.log('existing database connected');
}
// heavy database operations should start from this.
});
https://stackoverflow.com/questions/18199004
复制