当前位置: 首页 > news >正文

电影下载网站 怎么做wordpress出现403

电影下载网站 怎么做,wordpress出现403,昆明微信网站建设,如何在百度上注册自己的网站连接数据库 我们首先创建一个DBManager类#xff0c;通过这个类new出来的对象管理一个数据库 具体关于indexedDB的相关内容可以看我的这篇博客 indexedDB class DBManager{}我们首先需要打开数据库#xff0c;打开数据库需要数据库名和该数据库的版本 constructor(dbName,…连接数据库 我们首先创建一个DBManager类通过这个类new出来的对象管理一个数据库 具体关于indexedDB的相关内容可以看我的这篇博客 indexedDB class DBManager{}我们首先需要打开数据库打开数据库需要数据库名和该数据库的版本 constructor(dbName, version) {this.dbName dbName;this.version version;this.db null }在constructor中我们先初始化数据库相关信息dbName为该对象管理的数据库的数据库名version为该数据库的版本db为该数据库的IDBDatabase对象 现在我们开始实现openDB方法 openDB() {return new Promise((resolve, reject) {const cmd indexedDB.open(this.dbName, this.version)cmd.onsuccess (event) {console.log(数据库打开成功)this.db event.target.resultresolve(this.db)}cmd.onerror (event) {console.log(数据库打开失败)reject(event.target.error)}}) }因为打开数据库涉及i/o操作所以是异步的所以我们需要返回一个Promise 关闭数据库 当数据库使用完毕为了节省资源我们可以选择断开数据库的连接 closeDB() {if (this.db) {console.log(关闭数据库)this.db.close()this.db null} }删除数据库 如果数据库某一天不在使用我们可以选择删除这个数据库来节省资源 deleteDB() {return new Promise((resolve, reject) {const cmd indexedDB.deleteDatabase(this.dbName)cmd.onsuccess (event) {console.log(数据库删除成功)resolve()}cmd.onerror (event) {console.log(数据库删除失败)reject(event.target.error)}}) }同样删除数据库是异步的我们需要返回一个Promise 我们接下来来测试一下 (async function () {const db new DBManager(student, 1)await db.openDB()await db.closeDB()await db.deleteDB() })()需要注意的是我们在删除数据库之前必须先断开数据库连接 创建对象仓库 我们接下来需要实现创建对象的方法 createStore(storeName, keyPath, keys) {return new Promise((resolve, reject) {if (this.db) {console.log(添加存储仓库, storeName)const store this.db.createObjectStore(storeName, { keyPath: keyPath, autoIncrement: true })if (keys) {keys.forEach(key {store.createIndex(key, key, { unique: key keyPath ? true : false })})}resolve(this.db)} else {reject(数据库未打开)}}) }但是如果我们直接通过调用createStore来创建对象仓库的话浏览器会报错 这是因为针对对象仓库的操作是需要放在db.onupgradeneeded的回调中所以我们不能直接这么写 数据库的更新 我们可以用一个更新方法来手动触发onupgradeneeded这个事件 updateDB(callback) {return new Promise(async (resolve, reject) {console.log(数据库升级)if (this.db) {this.closeDB()this.version 1await this.openDB(callback)resolve(this.db)}else {reject(数据库未打开)}}) } openDB(callback) {return new Promise((resolve, reject) {const cmd indexedDB.open(this.dbName, this.version)cmd.onsuccess (event) {console.log(数据库打开成功)this.db event.target.resultresolve(this.db)}cmd.onerror (event) {console.log(数据库打开失败)reject(event.target.error)}if (callback) {cmd.onupgradeneeded (event) {this.db event.target.resultcallback(event)}}}) }update方法通过调用close和open方法更新数据库同时将对对象仓库的操作封装成函数传入update方法中再将这个函数放入open方法中open方法中通过判断是否传入参数来判断是否需要监听onupgradeneeded事件因为当用户第一次创建数据库的时候会触发这个事件而第一次的时候我们是不需要监听的 接下来我们重新处理下createStore里的逻辑 createStore(storeName, keyPath, keys) {return new Promise(async (resolve, reject) {if (this.db) {await this.updateDB((event) {console.log(添加存储仓库, storeName)const store this.db.createObjectStore(storeName, { keyPath: keyPath, autoIncrement: true })if (keys) {keys.forEach(key {store.createIndex(key, key, { unique: key keyPath ? true : false })})}})resolve(this.db)} else {reject(数据库未打开)}}) }接下来我们再来测试一下 (async function () {const db new DBManager(student, 1)await db.openDB()await db.createStore(student, id, [id, name, age, score])await db.closeDB()await db.deleteDB() })()为什么是先打印添加存储仓库后打印数据库打开因为当IDBDatabase对象同时出发onsuccess和onupgradeneeded事件时会先执行onupgradeneeded的回调然后执行onsuccess中的回调 数据记录的操作 我们接下来实现关于数据记录的方法 增加数据 增加数据记录的逻辑较为简单调用indexedDB提供的add方法就行 insert(storeName, data) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readwrite)const store transaction.objectStore(storeName)const cmd store.add(data)cmd.onsuccess (event) {console.log(插入数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(插入数据失败)reject(event.target.error)}} else {reject(数据库未打开)}}) }我们来测试一下 (async function () {const db new DBManager(student, 1)await db.openDB()await db.createStore(student, id, [id, name, age, score])await db.insert(student, { id: 1, name: 张三, age: 18, score: 90 })await db.insert(student, { id: 2, name: 李四, age: 20, score: 56 })await db.closeDB()await db.deleteDB() })()查询数据 查询数据我们需要根据不同的查询方式来实现不同的方法 通过key查询 queryByKey(storeName, value) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cmd store.get(value)cmd.onsuccess (event) {console.log(查询数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}}) }查询全部数据记录 queryAll(storeName) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cmd store.getAll()cmd.onsuccess (event) {console.log(查询数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}}) }通过游标查询 queryByCursor(storeName, range, direction next) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cursor range ? store.openCursor(range, direction) : store.openCursor()const result []cursor.onsuccess (event) {const cursor event.target.resultif (cursor) {result.push(cursor.value)cursor.continue()} else {console.log(查询数据成功)resolve(result)}}cursor.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}}) }通过指定key-value查询 queryByIndex(storeName, indexName, value) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cmd store.index(indexName).get(value)cmd.onsuccess (event) {console.log(查询数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}}) }我们现在来测试一下 (async function () {const db new DBManager(student, 1)await db.openDB()await db.createStore(student, id, [id, name, age, score])await db.insert(student, { id: 1, name: 张三, age: 18, score: 90 })await db.insert(student, { id: 2, name: 李四, age: 20, score: 56 })await db.insert(student, { id: 3, name: 王五, age: 19, score: 80 })await db.insert(student, { id: 4, name: 赵六, score: 70 })const result await db.queryByIndex(student, age, 18)console.log(result)const result2 await db.queryByKey(student, 3)console.log(result2)const result3 await db.queryByCursor(student)console.log(result3)const result4 await db.queryByCursor(student, IDBKeyRange.only(4))console.log(result4)const result5 await db.queryAll(student)console.log(result5)await db.closeDB()await db.deleteDB() })()更新数据 更新数据记录也是通过调用indexedDB中的put方法来实现 update(storeName, key, data) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readwrite)const store transaction.objectStore(storeName)const cmd store.put(data)cmd.onsuccess (event) {console.log(更新数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(更新数据失败)reject(event.target.error)}} else {reject(数据库未打开)}}) }删除数据 更新数据记录也是通过调用indexedDB中的delete方法来实现 delete(storeName, key) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readwrite)const store transaction.objectStore(storeName)const cmd store.delete(key)cmd.onsuccess (event) {console.log(删除数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(删除数据失败)reject(event.target.error)}} else {reject(数据库未打开)}}) }完整代码 最后我们来看一下完整代码 class DBManager {constructor(dbName, version) {this.dbName dbName;this.version version;this.db null}openDB(callback) {return new Promise((resolve, reject) {const cmd indexedDB.open(this.dbName, this.version)cmd.onsuccess (event) {console.log(数据库打开成功)this.db event.target.resultresolve(this.db)}cmd.onerror (event) {console.log(数据库打开失败)reject(event.target.error)}if (callback) {cmd.onupgradeneeded (event) {this.db event.target.resultcallback(event)}}})}closeDB() {if (this.db) {console.log(关闭数据库)this.db.close()this.db null}}deleteDB() {return new Promise((resolve, reject) {const cmd indexedDB.deleteDatabase(this.dbName)cmd.onsuccess (event) {console.log(数据库删除成功)resolve()}cmd.onerror (event) {console.log(数据库删除失败)reject(event.target.error)}})}updateDB(callback) {return new Promise(async (resolve, reject) {console.log(数据库升级)if (this.db) {this.closeDB()this.version 1await this.openDB(callback)resolve(this.db)}else {reject(数据库未打开)}})}createStore(storeName, keyPath, keys) {return new Promise(async (resolve, reject) {if (this.db) {await this.updateDB((event) {console.log(添加存储仓库, storeName)const store this.db.createObjectStore(storeName, { keyPath: keyPath, autoIncrement: true })if (keys) {keys.forEach(key {store.createIndex(key, key, { unique: key keyPath ? true : false })})}})resolve(this.db)} else {reject(数据库未打开)}})}deleteStore(storeName) {return new Promise(async (resolve, reject) {if (this.db) {await this.updateDB((event) {console.log(删除存储仓库, storeName)const store this.db.deleteObjectStore(storeName)})resolve(this.db)} else {reject(数据库未打开)}})}insert(storeName, data) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readwrite)const store transaction.objectStore(storeName)const cmd store.add(data)cmd.onsuccess (event) {console.log(插入数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(插入数据失败)reject(event.target.error)}} else {reject(数据库未打开)}})}update(storeName, key, data) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readwrite)const store transaction.objectStore(storeName)const cmd store.put(data)cmd.onsuccess (event) {console.log(更新数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(更新数据失败)reject(event.target.error)}} else {reject(数据库未打开)}})}delete(storeName, key) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readwrite)const store transaction.objectStore(storeName)const cmd store.delete(key)cmd.onsuccess (event) {console.log(删除数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(删除数据失败)reject(event.target.error)}} else {reject(数据库未打开)}})}queryByKey(storeName, value) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cmd store.get(value)cmd.onsuccess (event) {console.log(查询数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}})}queryAll(storeName) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cmd store.getAll()cmd.onsuccess (event) {console.log(查询数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}})}queryByIndex(storeName, indexName, value) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cmd store.index(indexName).get(value)cmd.onsuccess (event) {console.log(查询数据成功)resolve(event.target.result)}cmd.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}})}queryByCursor(storeName, range, direction next) {return new Promise((resolve, reject) {if (this.db) {const transaction this.db.transaction(storeName, readonly)const store transaction.objectStore(storeName)const cursor range ? store.openCursor(range, direction) : store.openCursor()const result []cursor.onsuccess (event) {const cursor event.target.resultif (cursor) {result.push(cursor.value)cursor.continue()} else {console.log(查询数据成功)resolve(result)}}cursor.onerror (event) {console.log(查询数据失败)reject(event.target.error)}} else {reject(数据库未打开)}})} }
http://www.hkea.cn/news/14495257/

相关文章:

  • 高级网站设计效果图郑州seo网络营销技术
  • 网络公司网站建设方案做cps的网络文学网站
  • 深圳市住房建设局网站网站主机安全
  • 建设个网站多少钱珠海电视台app下载
  • 网站建设的局限性wordpress后台白屏
  • 长春网站网站建设自评报告
  • 仙居县建设规划局网站西城专业网站建设公司哪家好
  • 茌平微网站建设建站小程序快速上线
  • 服装网站建设前期规划方案中山网站制作专业
  • 平面设计素材免费网站有哪些凡科网站怎么做友情链接
  • 网站积分商城该怎么建立seo和sem分别是什么
  • 网站建设中图片做电商网站的参考书
  • wap手机网站开发asp经验做企业网站的公司
  • 江苏网站备案流程专业做网盘资源收录分享的网站
  • 建站快车网站建设英文翻译
  • 大型网站得多少钱企业网站的建设哪家比较好
  • 深圳建站公司哪个济南兴田德润简介做刀网站
  • 重庆自助建站模板网站主色怎么选择
  • wordpress建站配置个人网站域名怎么取
  • 有哪些手机网站杭州小程序搭建
  • 大德通众包网站建设做的网站如何更换网站模板
  • 什么样的公司愿意做网站企业网站建设费用深圳
  • m域名网站安全吗广西建设厅网站彭新唐
  • 网站平台怎么建设做网站电话销售说辞
  • 建设网站去哪里找网站设计论文前言怎么写
  • 大学同学会网站建设方案济宁网站网站建设
  • 直播平台网站开发长链接在线转化短链接
  • 网站怎么提升流量四川聚顺成网络科技有限公司
  • 做好的网站怎么演示深圳做美颜相机的公司
  • 香水网站建设规划书制作网站的技术