Lawnchair-IndexedDB не поддерживает несколько записей

Я попытался создать несколько записей в indexed-db, но это не позволит мне, например, nike и adidas objectStores

var nike = Lawnchair({adapter:'indexed-db', name:'stores', record:'nike'},function(e){
    console.log("nike store open");
    this.save({id:1}, function(data){
        console.log('nike data: ', data);
    });
});

var adidas = Lawnchair({adapter:'indexed-db', name:'stores', record:'adidas'},function(e){
    console.log("adidas store open");
    this.save({id:1}, function(data){
        console.log('adidas data: ', data);
    });
});

Я думаю, что именно так можно создать несколько записей в indexed-db. На самом деле это происходит по запросу onupgradeneeded. См. код ниже.

// Handle datastore upgrades.
request.onupgradeneeded = function(e) {
    var db = e.target.result;

    var nike = db.createObjectStore('nike');
    var adidas = db.createObjectStore('adidas');
};

Если я не могу создать запись adidas, это на самом деле ошибка, которая возникает при доступе к ней.

[Exception... "The operation failed because the requested database object could not be found. For example, an object store did not exist but was being opened." code: "8" ...]

person Nino Paolo    schedule 30.07.2013    source источник


Ответы (2)


Lawnchair предназначен для бессхемного варианта использования. Используйте отдельную базу данных для каждого экземпляра Lawnchair.

Если вам действительно нужно несколько таблиц в базе данных, вы можете использовать другие библиотеки, такие как моя, ydn-db.

person Kyaw Tun    schedule 31.07.2013
comment
Привет Чжо Тун, я скачал вашу библиотеку, но у меня возникли проблемы с ее компиляцией. Он генерирует|-ydn.db-jquery-0.7.7.js | | |-zss-ydn.db-conn.js | | |-zss-ydn.db-core-db.js | | |-zss-ydn.db-core-idb.js | | |-zss-ydn.db-core.js | | |-zss-ydn.db-crud-db.js | | |-zss-ydn.db-crud-idb.js | | |-zss-ydn.db-crud-simple.js | | |-zss-ydn.db-crud-websql.js | | |-zss-ydn.db-crud.js | | |-zss-ydn.db-dev.js | | |-zss-ydn.db-dev.js.map | | |-zss-ydn.db-jquery.js | | |-zss-ydn.db-raw.js | | `-zss-ydn.db.js - person Nino Paolo; 03.08.2013
comment
Привет, Kyawn, не могли бы вы объяснить, в чем разница между этими *.js? :) Спасибо. Это отличная библиотека. Кроме того, есть ли у меня возможность выбрать, какое хранилище мне следует использовать? Например, допустим, я хочу использовать websql вместо indexed-db. Мой хром поддерживает websql и indexed-db. :) - person Nino Paolo; 03.08.2013
comment
Это бинарные дистрибутивы. Вы используете любой, в зависимости от того, какую функцию вы хотите. Чтобы изменить механизмы хранения, измените mechanisms в параметрах. Подробнее см. документацию по API dev.yathit.com/api-reference. /ydn-db/storage.html - person Kyaw Tun; 04.08.2013
comment
Потрясающий! Спасибо Кьяу. Ваша библиотека ydn-db идеальна :) - person Nino Paolo; 05.08.2013
comment
привет, kyawn tun, я просто хочу подтвердить, поддерживает ли ydn-db мобильный телефон / phonegap? - person Nino Paolo; 14.08.2013
comment
да. Проверьте демо-приложение для Android. - person Kyaw Tun; 14.08.2013

Нашел способ исправить. Я добавил патч, добавив свойство records к объекту option. См. {адаптер..., записи:[...]} ниже.

<script>

    var nike = Lawnchair({adapter:'indexed-db', name:'stores', record:'nike', records:['nike','adidas']},function(e){
        console.log("nike store open", this);
        this.save({id:1}, function(data){
            console.log('nike data: ', data);
        });
    });


    var adidas = Lawnchair({adapter:'indexed-db', name:'stores', record:'adidas', records:['nike','adidas']},function(e){
        console.log("adidas store open");
        this.save({id:1}, function(data){
            console.log('adidas data: ', data);
        });
    });

</script>

См. мой запрос на вытягивание здесь: https://github.com/brianleroux/lawnchair/pull/175

person Nino Paolo    schedule 01.08.2013