【发布时间】:2021-02-17 13:43:28
【问题描述】:
我正在尝试构建一个通用的 IndexedDB 模块以在多个项目中使用。我遇到了一些我无法弄清楚的奇怪行为。
据我了解,事务只能发生 3 个事件,但是,当我故意应用错误的 objectStore 时,不会执行中止或错误事件。
如果这是我设置不正确或者这是预期的行为,我很困惑,感谢您花时间查看我的问题!
/**
* Adds a single object to the specificed objectStore
* @param {IDBDatabase} database Initiliazed database
* @param {string} objectStore Name of objectStore where transactions will be occurring
* @param {object} data Object to be inserted into the objectStore
* @returns {Promise} Resolve => String | Reject => Error
*/
async function addRecord(database, storeName, data) {
return new Promise(function (resolve, reject) {
try {
let transaction = database.transaction(storeName, "readwrite");
transaction.oncomplete = function () {
console.log("Add Transaction Successful.");
};
transaction.onabort = function (event) {
throw (`Transaction Aborted - Supplied Data {${database},${storeName},${data}} Code: ${event.target.errorCode} Error: ${request.error}`)
}
transaction.onerror = function (event) {
throw (`Transaction Failed - Supplied Data {${database},${storeName},${data}} Code: ${event.target.errorCode} Error: ${request.error}`)
};
let objectStore = transaction.objectStore(storeName);
let request = objectStore.add(data);
request.onsuccess = function () {
console.log("Add Request Succesful");
resolve()
};
request.onerror = function (event) {
console.log(`Request Failed: addRecord - Supplied Data {${database_name},${database_version},${upgrade_function}} Code: ${event.target.errorCode} Error: ${request.error}`)
throw (`Request Failed: Supplied Data {${database_name},${database_version},${upgrade_function}} Code: ${event.target.errorCode} Error: ${request.error}`)
};
} catch (error) {
reject(`Error: AddRecord - ${error.message}`)
}
});
}
【问题讨论】:
标签: javascript web-deployment indexeddb