javascript - 如何以编程方式获取 indexedDB 中每个 objectStore 的当前数据大小?
问题描述
我想以编程方式获取 indexedDB 中每个 objectStore 的当前数据大小(以 MB/GB 为单位的使用情况)。
我认为这可能是一个受欢迎的问题,但我在 StackOverflow 中找不到任何类似的问题/答案。
这可能吗?
解决方案
如果数据库条目的数量很多,这段代码需要很长时间,但我可以通过这段代码得到结果。
const countDB = async (db, table) => {
return new Promise((resolve, reject) => {
const tx = db.transaction([table], 'readonly');
const store = tx.objectStore(table);
const cursorReq = store.openCursor();
let count = 0;
let size = 0;
cursorReq.onsuccess = function(e) {
const cursor = cursorReq.result;
if (cursor) {
count++;
size = size + cursor.value.blob.size;
cursor.continue();
}
};
cursorReq.onerror = function(e) {
reject(e);
};
tx.oncomplete = function(e) {
resolve({
count: count,
size: size
});
};
tx.onabort = function(e) {
reject(e);
};
tx.onerror = function(e) {
reject(e);
};
});
};
推荐阅读
- html - 如何使用绝对位置平滑拉伸 div?
- react-native - 有天赋的聊天问题,消息在文本输入时跳到屏幕上
- java - 带有描述的 Hotspot VM 操作列表
- php - 如何在sql中的3表查询中显示确切结果
- javascript - 努力定位使用 jQuery 创建的 div 元素
- html - 使用 Angular 或 Angular 材质的 HTML 表格单元格中的垂直线和水平双向箭头
- node.js - 如何在Node js中连续接收tcp连接数据
- python - 为什么更改 pos_hint 属性不会在运行时更改小部件的位置?
- azure - 如何在 Azure 的 Vnet 中阻止公共端口并允许端口?
- c++ - 是否有一个标准功能可以打印/监视标准输入文件的内容,同时将数据留在标准输入中?