如何使用YDN-db在另一个Html页面中加载数据库上下文

How to load a db context in another Html page using YDN-DB?

本文关键字:加载 数据库 上下文 Html 何使用 YDN-db 另一个      更新时间:2023-09-26

我已经在第一页加载了所有数据:

<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);
});

它在控制台上返回"undefined"。我没有任何线索。

此外,im在两个页面上都使用html缓存清单

<html manifest="/home/manifest">

以及在本地服务器下进行测试,例如使用localhost和端口60873进行访问。

我是不是错过了什么?这不是打开现有YDN-DB的正确方式吗?

谢谢!

您没有遗漏任何内容,它应该可以工作。您应该在开发控制台的资源面板上检查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.
});