2013-07-30 3 views
2

Я попытался создать несколько записей в индексированных дб, но она не позволит мне, например, Найк и Адидас objectStoresLawnchair-IndexedDB не поддерживает несколько записей

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. Это действительно происходит по запросу. См. Код ниже.

// 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" ...] 

ответ

1

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

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

+0

Привет Чжо Тун, я загрузил свою библиотеку, но меня проблема компиляции. Он генерирует | -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 –

+0

Привет, Кьяун, не могли бы вы объяснить, в чем разница между этими * .js? :) Благодаря. Это отличная библиотека. Кроме того, есть ли у меня возможность выбрать, какую память я должен использовать? Например, предположим, что я хочу использовать websql вместо indexed-db. Мой хром поддерживает websql и indexed-db. :) –

+1

Это двоичные дистрибутивы. Вы используете любой, в зависимости от того, какую функцию вы хотите. Чтобы изменить механизмы хранения, измените «механизмы» в параметрах. Более подробно см. Api doc http://dev.yathit.com/api-reference/ydn-db/storage.html –

1

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

<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