2013-07-30 51 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); 
    }); 
}); 

我觉得这是如何创建多个记录在索引数据库中。它实际上发生在request.onupgrade需要。见下面的代码。

// 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

嗨Kyawn,你能解释一下这些* .js有什么区别吗? :) 谢谢。这是一个很棒的图书馆。另外,我是否可以选择使用哪种存储?例如,假设我想使用websql而不是indexed-db。我的chrome支持websql和indexed-db。 :) –

+1

这些是二进制分布。您可以使用任何一种,具体取决于您想要的功能。要更改存储机制,请更改选项中的'机制'。有关更多详细信息,请参阅api文档http://dev.yathit.com/api-reference/ydn-db/storage.html –

1

找到了解决的办法。我已经通过在选项对象上添加了一个records属性来添加一个修补程序。请参阅下面的{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

相关问题