概述版本迁移需要独占连接。本文给出冲突检测与事件处理,避免升级阻塞。连接与事件处理function openDB(name, version, upgrade) {
return new Promise((resolve, reject) => {
const req = indexedDB.open(name, version);
req.onupgradeneeded = e => upgrade && upgrade(req.result, e.oldVersion, e.newVersion);
req.onsuccess = () => {
const db = req.result;
db.onversionchange = () => { db.close(); /* 提示用户刷新或自动重连 */ };
resolve(db);
};
req.onerror = () => reject(req.error);
});
}
async function ensureUpgraded() {
const db = await openDB('appdb', 2, (db, oldV, newV) => {
if (!db.objectStoreNames.contains('items')) db.createObjectStore('items', { keyPath: 'id' });
});
db.close();
}

发表评论 取消回复