如何检查 id IndexedDB 已经存在于 React 生命周期方法中
How to check id IndexedDB already exist inside of React lifecycle methods
我有 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
和名称 dbName
存在它显示这一行 console.log("Does not exist");
您能给我一些关于如何检查数据库是否存在的建议吗?
先谢谢你了!
IndexedDB 是异步的,您的代码正在以同步方式检查 dbExist,因此它不会工作。您可以使用 localStorage 来设置值 - 所以当创建数据库时,您将值设置为 true,默认情况下在您的应用程序启动时将其设置为 false。
所以在您的应用启动时,您需要执行以下代码 -
var isDbCreated = localStorage.getItem('is_db_created')==='true';
if(!isDbCreated){
localStorage.setItem('is_db_created','false');
}
并且在创建数据库时在 onupgradeneeded 中将其设置为 true -
localStorage.setItem('is_db_created','true');
如果您发现它很难 - 考虑使用 jsstore 库 - 它提供 api 检查是否创建了数据库,它还提供了简单的 sql 就像 [=24] =] 几乎所有数据库功能。
查看 React 示例以获取更多信息 - https://github.com/ujjwalguptaofficial/JsStore/tree/master/examples/react
我有 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
和名称 dbName
存在它显示这一行 console.log("Does not exist");
您能给我一些关于如何检查数据库是否存在的建议吗?
先谢谢你了!
IndexedDB 是异步的,您的代码正在以同步方式检查 dbExist,因此它不会工作。您可以使用 localStorage 来设置值 - 所以当创建数据库时,您将值设置为 true,默认情况下在您的应用程序启动时将其设置为 false。
所以在您的应用启动时,您需要执行以下代码 -
var isDbCreated = localStorage.getItem('is_db_created')==='true';
if(!isDbCreated){
localStorage.setItem('is_db_created','false');
}
并且在创建数据库时在 onupgradeneeded 中将其设置为 true -
localStorage.setItem('is_db_created','true');
如果您发现它很难 - 考虑使用 jsstore 库 - 它提供 api 检查是否创建了数据库,它还提供了简单的 sql 就像 [=24] =] 几乎所有数据库功能。
查看 React 示例以获取更多信息 - https://github.com/ujjwalguptaofficial/JsStore/tree/master/examples/react