IDBDatabase:createObjectStore() 方法
注意:此功能在Web Workers 中可用。
createObjectStore()
方法是 IDBDatabase
接口的方法,用于创建并返回一个新的 IDBObjectStore
。
该方法接收存储的名称以及一个参数对象,该对象允许您定义重要的可选属性。您可以使用该属性来唯一标识存储中的各个对象。由于该属性是标识符,因此它应该对每个对象都是唯一的,并且每个对象都应该具有该属性。
此方法只能在 versionchange
事务中调用。
语法
js
createObjectStore(name)
createObjectStore(name, options)
参数
返回值
一个新的 IDBObjectStore
。
异常
此方法可能会引发 DOMException
,其 name
为以下类型之一
InvalidStateError
DOMException
-
如果该方法不是从
versionchange
事务回调中调用的,则抛出此异常。 TransactionInactiveError
DOMException
-
如果对不存在的源数据库发出请求(例如,当数据库已被删除或移除时),则抛出此异常。在 Firefox 41 之前的版本中,在这种情况下也会引发
InvalidStateError
,这具有误导性;现在已修复此问题(请参阅 Firefox 错误 1176165)。 ConstraintError
DOMException
-
如果连接的数据库中已存在具有给定名称(基于区分大小写的比较)的对象存储,则抛出此异常。
InvalidAccessError
DOMException
-
如果
autoIncrement
设置为 true 且keyPath
为空字符串或包含空字符串的数组,则抛出此异常。
示例
js
// Let us open our database
const request = window.indexedDB.open("toDoList", 4);
// This handler is called when a new version of the database
// is created, either when one has not been created before
// or when a new version number is submitted by calling
// window.indexedDB.open().
// This handler is only supported in recent browsers.
request.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
};
// Create an objectStore for this database
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
// define what data items the objectStore will contain
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
objectStore.createIndex("notified", "notified", { unique: false });
note.appendChild(document.createElement("li")).textContent =
"Object store created.";
};
规范
规范 |
---|
Indexed Database API 3.0 # ref-for-dom-idbdatabase-createobjectstore① |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
另请参阅
- 使用 IndexedDB
- 启动事务:
IDBDatabase
- 使用事务:
IDBTransaction
- 设置键范围:
IDBKeyRange
- 检索和修改数据:
IDBObjectStore
- 使用游标:
IDBCursor
- 参考示例:待办事项通知(查看示例)。