|
@@ -214,3 +214,39 @@ export async function storeSetData(db, storeName, key, newFileData, callback) {
|
|
|
// console.error("从IndexedDB检索数据时出错:", event.target.error);
|
|
|
// };
|
|
|
// }
|
|
|
+// utils/indexedDb.js
|
|
|
+export async function openDB(dbName, version) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ const request = indexedDB.open(dbName, version);
|
|
|
+ request.onsuccess = () => resolve(request.result);
|
|
|
+ request.onerror = (event) => reject(event.target.error);
|
|
|
+ request.onupgradeneeded = (event) => {
|
|
|
+ const db = event.target.result;
|
|
|
+ if (!db.objectStoreNames.contains("vuexData")) {
|
|
|
+ db.createObjectStore("vuexData", { keyPath: "key" });
|
|
|
+ }
|
|
|
+ };
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+export async function saveData(dbName, key, value) {
|
|
|
+ const db = await openDB(dbName, 1);
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ const transaction = db.transaction(["vuexData"], "readwrite");
|
|
|
+ const store = transaction.objectStore("vuexData");
|
|
|
+ const request = store.put({ key, value });
|
|
|
+ request.onsuccess = () => resolve(true);
|
|
|
+ request.onerror = (event) => reject(event.target.error);
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+export async function getData(dbName, key) {
|
|
|
+ const db = await openDB(dbName, 1);
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ const transaction = db.transaction(["vuexData"], "readonly");
|
|
|
+ const store = transaction.objectStore("vuexData");
|
|
|
+ const request = store.get(key);
|
|
|
+ request.onsuccess = () => resolve(request.result?.value || null);
|
|
|
+ request.onerror = (event) => reject(event.target.error);
|
|
|
+ });
|
|
|
+}
|