IDBRequest:error 属性
注意:此功能在Web Workers 中可用。
error
是 IDBRequest
接口的只读属性,在请求失败时返回错误。
值
如果无错误,则为 DOMException
或 null
。异常对象中返回以下错误名称
AbortError
-
如果您中止事务,则所有仍在进行中的请求都会收到此错误。
ConstraintError
-
如果您插入的数据不符合约束条件。它是用于创建存储和索引的异常类型。例如,如果您尝试添加一个已存在于记录中的新键,则会收到此错误。
QuotaExceededError
-
如果您用完了磁盘配额,并且用户拒绝为您提供更多空间。
UnknownError
-
如果操作失败的原因与数据库本身无关。由于磁盘 IO 错误导致的失败就是一个例子。
VersionError
-
如果您尝试打开的数据库版本低于其当前版本。
除了发送到 IDBRequest
对象的错误代码之外,异步操作也可能会引发异常。该列表描述了在执行请求时可能出现的错误,但在发出请求时您也可能遇到其他问题。例如,如果在请求未完成时访问结果,则会抛出 InvalidStateError
异常。
示例
以下示例请求给定记录标题 onsuccess
从 IDBObjectStore
(作为 objectStoreTitleRequest.result
提供)获取关联记录,更新记录的一个属性,然后将更新后的记录放回对象存储中。底部还包含一个 onerror
函数,如果请求失败,则报告错误是什么。有关完整的示例,请参阅我们的 待办事项通知 应用(查看示例)。
js
const title = "Walk dog";
// Open up a transaction as usual
const objectStore = db
.transaction(["toDoList"], "readwrite")
.objectStore("toDoList");
// Get the to-do list with the specified title
const objectStoreTitleRequest = objectStore.get(title);
objectStoreTitleRequest.onsuccess = () => {
// Grab the data object returned as the result
const data = objectStoreTitleRequest.result;
// Update the notified value in the object to "yes"
data.notified = "yes";
// Create another request that inserts the item
// back into the database
const updateTitleRequest = objectStore.put(data);
// When this new request succeeds, run the displayData()
// function again to update the display
updateTitleRequest.onsuccess = () => {
displayData();
};
};
objectStoreTitleRequest.onerror = () => {
// If an error occurs with the request, log what it is
console.log(
`There has been an error with retrieving your data: ${objectStoreTitleRequest.error}`,
);
};
规范
规范 |
---|
Indexed Database API 3.0 # ref-for-dom-idbrequest-error① |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 使用 IndexedDB
- 启动事务:
IDBDatabase
- 使用事务:
IDBTransaction
- 设置键范围:
IDBKeyRange
- 检索和更改数据:
IDBObjectStore
- 使用游标:
IDBCursor
- 参考示例:待办事项通知(查看示例)。