async handleAnalysis(params) {
//
// this 关键字在 request.onsuccess 回调中的上下文不正确。在事件回调函数中,this 的值是不同于组件实例的,在这种情况下,需要将组件实例存储在一个变量中
const that = this;
//
// 打开指定数据 获取indexDB 数据
let dbName = 'hist-data-1d'
const request = indexedDB.open(dbName); // 如果你不知道数据库的版本号,可以省略第二个参数,这样 indexedDB 会默认为你打开最新版本的数据库,因为版本号总是自增长的
request.onerror = event => {
console.error('打开数据库失败', event.target.errorCode);
};
//
//
request.onsuccess = function (event) {
let db = event.target.result;
console.log('打开数据库成功');
// let transaction = db.transaction(symbolList, 'readonly'); // 由于 symbolList 的元素不是表名 要改写
// 依次读取列表元素的表
for (let symbol of symbolList) {
//
// 拼接key
let tableName = symbol.replace('-', '_').toLowerCase();
let key = funcTableName(tableName, minTs, maxTs, '1d')
//
// 创建只读事务 --.创建了一个事务(transaction)对象,用于访问指定的对象仓库(object store),并指定事务的访问模式为只读(readonly)
let transaction = db.transaction([tableName], 'readonly');
let store = transaction.objectStore(tableName); // 获取指定表名对应的对象仓库
// 使用表的 get() 方法读取指定键名对应的键值
let getRequest = store.get(key);
that.logList.push(`数据获取成功 : ${key}`) // this 关键字在 request.onsuccess 回调中的上下文不正确。在事件回调函数中,this 的值是不同于组件实例的
getRequest.onerror = function (event) {
console.log('读取数据出错');
};
getRequest.onsuccess = function (event) {
let data = event.target.result;
console.log(data, key); // 打印数据对象
// 可以将数据对象加入到一个数组中
};
}
}
}
indexDB vue 获取指定数据库 指定表 指定key 的数据
最新推荐文章于 2024-05-11 06:04:43 发布