|
@@ -13,6 +13,112 @@ export default {
|
|
|
setWs: function(newWs) {
|
|
|
this.ws = newWs
|
|
|
},
|
|
|
+ openDB:function(dbName, version = 1) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ // 兼容浏览器
|
|
|
+ var indexedDB =
|
|
|
+ window.indexedDB ||
|
|
|
+ window.mozIndexedDB ||
|
|
|
+ window.webkitIndexedDB ||
|
|
|
+ window.msIndexedDB;
|
|
|
+ let db;
|
|
|
+ // 打开数据库,若没有则会创建
|
|
|
+ const request = indexedDB.open(dbName, version);
|
|
|
+ // 数据库打开成功回调
|
|
|
+ request.onsuccess = function (event) {
|
|
|
+ db = event.target.result; // 数据库对象
|
|
|
+ console.log("数据库打开成功");
|
|
|
+ resolve(db);
|
|
|
+ };
|
|
|
+ // 数据库打开失败的回调
|
|
|
+ request.onerror = function (event) {
|
|
|
+ console.log("数据库打开报错");
|
|
|
+ };
|
|
|
+ // 数据库有更新时候的回调
|
|
|
+ request.onupgradeneeded = function (event) {
|
|
|
+ // 数据库创建或升级的时候会触发
|
|
|
+ console.log("onupgradeneeded");
|
|
|
+ db = event.target.result; // 数据库对象
|
|
|
+ var objectStore;
|
|
|
+ // 创建存储库
|
|
|
+ objectStore = db.createObjectStore("signalChat", {
|
|
|
+ keyPath: "sequenceId", // 这是主键
|
|
|
+ // autoIncrement: true // 实现自增
|
|
|
+ });
|
|
|
+ // 创建索引,在后面查询数据的时候可以根据索引查
|
|
|
+ objectStore.createIndex("sequenceId", "sequenceId", { unique: false });
|
|
|
+
|
|
|
+ };
|
|
|
+ });
|
|
|
+ },
|
|
|
+ addData(db, storeName, data) {
|
|
|
+ var request = db
|
|
|
+ .transaction([storeName], "readwrite") // 事务对象 指定表格名称和操作模式("只读"或"读写")
|
|
|
+ .objectStore(storeName) // 仓库对象
|
|
|
+ .add(data);
|
|
|
+
|
|
|
+ request.onsuccess = function (event) {
|
|
|
+ console.log("数据写入成功");
|
|
|
+ };
|
|
|
+
|
|
|
+ request.onerror = function (event) {
|
|
|
+ console.log("数据写入失败");
|
|
|
+ };
|
|
|
+ },
|
|
|
+ updateDB(db, storeName, data) {
|
|
|
+ var request = db
|
|
|
+ .transaction([storeName], "readwrite") // 事务对象
|
|
|
+ .objectStore(storeName) // 仓库对象
|
|
|
+ .put(data);
|
|
|
+
|
|
|
+ request.onsuccess = function () {
|
|
|
+ console.log("数据更新成功");
|
|
|
+ };
|
|
|
+
|
|
|
+ request.onerror = function () {
|
|
|
+ console.log("数据更新失败");
|
|
|
+ };
|
|
|
+ },
|
|
|
+ getDataByKey(db, storeName, key) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ var transaction = db.transaction([storeName]); // 事务
|
|
|
+ var objectStore = transaction.objectStore(storeName); // 仓库对象
|
|
|
+ var request = objectStore.get(key); // 通过主键获取数据
|
|
|
+
|
|
|
+ request.onerror = function (event) {
|
|
|
+ console.log("事务失败");
|
|
|
+ };
|
|
|
+
|
|
|
+ request.onsuccess = function (event) {
|
|
|
+ console.log("主键查询结果: ", request.result);
|
|
|
+ resolve(request.result);
|
|
|
+ };
|
|
|
+ });
|
|
|
+ },
|
|
|
+ deleteDB(db, storeName, id) {
|
|
|
+ var request = db
|
|
|
+ .transaction([storeName], "readwrite")
|
|
|
+ .objectStore(storeName)
|
|
|
+ .delete(id);
|
|
|
+
|
|
|
+ request.onsuccess = function () {
|
|
|
+ console.log("数据删除成功");
|
|
|
+ };
|
|
|
+
|
|
|
+ request.onerror = function () {
|
|
|
+ console.log("数据删除失败");
|
|
|
+ };
|
|
|
+ },
|
|
|
+ deleteDBAll(dbName) {
|
|
|
+ console.log(dbName);
|
|
|
+ let deleteRequest = window.indexedDB.deleteDatabase(dbName);
|
|
|
+ deleteRequest.onerror = function (event) {
|
|
|
+ console.log("删除失败");
|
|
|
+ };
|
|
|
+ deleteRequest.onsuccess = function (event) {
|
|
|
+ console.log("删除成功");
|
|
|
+ };
|
|
|
+ },
|
|
|
whetherWebSocket: function(type) {
|
|
|
var that = this
|
|
|
if ('WebSocket' in window) {
|