Как загрузить контекст БД в другую HTML-страницу, используя YDN-DB?

Я загрузил все свои данные на самой первой странице:

<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%> печатает некоторые json из C# бэкэнда.

Я могу загрузить информацию, как это, она работает:

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

Возвращает "неопределенный" на консоли. У меня нет никаких улик.

Кроме того, я использую html кеш-манифест на обеих страницах

<html manifest="/home/manifest">

и тестирование на локальном сервере, например, с помощью localhost и порта 60873.

Я что-то пропустил? Разве это не правильный способ открыть существующую YDN-DB?

Спасибо!

1 ответ

Решение

Вы ничего не пропускаете, и это должно работать. Вы должны проверить содержимое indexeddb на панели ресурсов консоли dev.

Вы должны инициализировать на второй странице /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.
});
Другие вопросы по тегам