-
-
Save bczhc/693e55ecc35e546eb86c498618d413ef to your computer and use it in GitHub Desktop.
export deepseek chat history in browser console (cached locally) #deepseek #llm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 打开数据库 | |
function openDatabase(dbName) { | |
return new Promise((resolve, reject) => { | |
const request = indexedDB.open(dbName); | |
request.onsuccess = (event) => { | |
const db = event.target.result; | |
resolve(db); | |
}; | |
request.onerror = (event) => { | |
reject(`Error opening database: ${event.target.errorCode}`); | |
}; | |
}); | |
} | |
// 获取所有对象存储的名称 | |
function getObjectStoreNames(db) { | |
return Array.from(db.objectStoreNames); | |
} | |
// 读取对象存储中的所有数据 | |
function readAllData(db, objectStoreName) { | |
return new Promise((resolve, reject) => { | |
const transaction = db.transaction([objectStoreName], 'readonly'); | |
const objectStore = transaction.objectStore(objectStoreName); | |
const request = objectStore.getAll(); | |
request.onsuccess = (event) => { | |
resolve(event.target.result); | |
}; | |
request.onerror = (event) => { | |
reject(`Error reading data from object store ${objectStoreName}: ${event.target.errorCode}`); | |
}; | |
}); | |
} | |
// 主函数:输出 IndexedDB 中的所有数据 | |
async function inspectIndexedDB(dbName) { | |
try { | |
const db = await openDatabase(dbName); | |
const objectStoreNames = getObjectStoreNames(db); | |
console.log(`Database: ${dbName}`); | |
for (const objectStoreName of objectStoreNames) { | |
const data = await readAllData(db, objectStoreName); | |
console.log(`Object Store: ${objectStoreName}`); | |
// console.log(JSON.stringify(data)); | |
console.log(data); | |
} | |
} catch (error) { | |
console.error(error); | |
} | |
} | |
// 使用示例:替换 'YourDatabaseName' 为你要检查的数据库名称 | |
await inspectIndexedDB('deepseek-chat'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
你的
openDatabase
函数使用indexedDB.open(dbName)
来打开数据库,但这里有一些需要注意的地方:onerror
处理:如果indexedDB.open
失败(比如权限问题、存储空间不足等),你需要onerror
处理reject
。onupgradeneeded
处理(如果数据库不存在或版本升级):onupgradeneeded
事件用于初始化数据库结构(如创建对象存储objectStore
)。onsuccess
可能不会立即返回一个可用的db
,而是会触发onupgradeneeded
先进行一些处理。改进后的代码:
改动点:
onerror
处理,避免程序崩溃onupgradeneeded
事件创建对象存储(如果需要)version
作为参数,以便后续升级数据库你可以调用
openDatabase("myDB")
来使用它。