Как загрузить контекст БД в другую 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.
});