我有react.js组件,我想检查IndexedDB
是否存在。
我正在尝试这样做
componentDidMount() {
var dbExists = true;
var openReq = indexedDB.open("dbName");
openReq.onupgradeneeded = e => {
e.target.transaction.abort();
dbExists = false;
console.log("Does not exist");
this.setState({redirect: false})
};
if (dbExists) {
this.setState({redirect: true})
}
}
但它无法按预期工作 - 即使名称为IndexedDB
的{{1}}存在,也会显示此行dbName
您是否愿意向我提供有关如何检查数据库是否存在的任何建议?
先谢谢你了!
答案 0 :(得分:1)
IndexedDB是异步的,你的代码正在以同步的方式检查dbExist,所以它不会工作。您可以使用localStorage来设置值 - 因此在创建db时,您将value设置为true,默认情况下在应用程序启动时将其设置为false。
因此,在应用程序启动时,您需要执行以下代码 -
var isDbCreated = localStorage.getItem('is_db_created')==='true';
if(!isDbCreated){
localStorage.setItem('is_db_created','false');
}
并在创建db时进行onupgradeneeded,将其设置为true -
localStorage.setItem('is_db_created','true');
如果你发现它很难 - 考虑使用jsstore库 - 它给api检查是否创建了db,并且它提供了几乎所有数据库功能的简单sql,如api。
检查出反应示例以获取更多信息 - https://github.com/ujjwalguptaofficial/JsStore/tree/master/examples/react