Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. Web API
  3. IDBObjectStore

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

IDBObjectStore

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

* Some parts of this feature may have varying levels of support.

备注: 此特性在Web Worker 中可用。

IndexedDB APIIDBObjectStore 接口表示数据库中的对象存储。对象存储中的记录根据其键值进行排序。这种排序可以实现快速插入、查找和有序检索。

实例属性

IDBObjectStore.indexNames只读

对象存储中对象的索引名列表。

IDBObjectStore.keyPath只读

对象存储的键路径。如果该属性为null,应用在每次操作时必须提供键名。

IDBObjectStore.name

对象存储的名称。

IDBObjectStore.transaction只读

对象存储所属的IDBTransaction 对象。

IDBObjectStore.autoIncrement只读

对象存储自增标志的值。

实例方法

IDBObjectStore.add()

返回一个IDBRequest 对象,并且在单独的线程中创建该值(value)的结构化克隆,并将克隆后的值存储到对象存储中。其用于将新记录添加到对象存储中。

IDBObjectStore.clear()

创建并立即返回一个IDBRequest 对象,并在单独的线程中清除当前对象存储。其用于删除对象存储中当前的所有记录。

IDBObjectStore.count()

返回一个IDBRequest 对象,并在单独的线程中返回匹配提供的键或IDBKeyRange 的记录的数量。如果未提供参数,它会返回当前存储的记录总数。

IDBObjectStore.createIndex()

在版本升级时创建新索引,返回一个所连接数据库的新IDBIndex 对象。

IDBObjectStore.delete()

返回一个IDBRequest 对象,并在单独的线程中删除由指定键选中的存储对象。其用于删除对象存储中的某个单独的记录。

IDBObjectStore.deleteIndex()

在版本升级时销毁所连接数据库的指定索引。

IDBObjectStore.get()

返回一个IDBRequest 对象,并在单独的线程中返回由指定键选中的存储对象。其用于从对象存储中检索特定记录。

IDBObjectStore.getKey()

返回一个IDBRequest 对象,并在单独的线程中检索并返回与指定参数匹配的对象存储中记录的键。

IDBObjectStore.getAll()

返回一个IDBRequest 对象,并在单独的线程中检索并返回与指定参数匹配的对象存储中的所有记录,如果没有提供参数,则返回存储中的所有记录。

IDBObjectStore.getAllKeys()

返回一个IDBRequest 对象,检索与指定参数匹配的对象存储中所有对象记录的键,如果没有提供参数,则检索存储中的所有对象记录的键。

IDBObjectStore.index()

打开当前对象存储的指定索引,然后索引可被用于通过游标来按索引的顺序返回一系列记录。

IDBObjectStore.openCursor()

返回一个IDBRequest 对象,并在单独的线程中返回一个新的IDBCursorWithValue 对象。其用于通过游标按主键迭代对象存储。

IDBObjectStore.openKeyCursor()

返回一个IDBRequest 对象,并在单独的线程中返回一个新的IDBCursor 对象。其用于通过键迭代对象存储。

IDBObjectStore.put()

返回一个IDBRequest 对象,并在单独的线程中创建该值(value)的结构化克隆,并将克隆后的值存储到对象存储中。其用于在事务模式为readwrite 时更新对象存储中的现有记录。

示例

此示例展示了对象存储的各种不同用法,从在onupgradeneeded 函数中使用IDBObjectStore.createIndex 更新数据结构,到使用IDBObjectStore.add 向对象存储中添加新项目。有关完整的可运行示例,请参见我们的待办事项通知应用程序(查看在线示例)。

js
// 打开数据库const DBOpenRequest = window.indexedDB.open("toDoList", 4);DBOpenRequest.onsuccess = (event) => {  note.appendChild(document.createElement("li")).textContent =    "Database initialized.";  // 将打开数据库的结果存储到 db 中。  db = DBOpenRequest.result;};// 此事件处理要创建新版本的数据库的事件(要么之前没有创建过,要么通过上面的// window.indexedDB.open 行提交了一个新的版本号)DBOpenRequest.onupgradeneeded = (event) => {  const db = event.target.result;  db.onerror = (event) => {    note.appendChild(document.createElement("li")).textContent =      "加载数据库时出错。";  };  // 在数据库中创建一个对象存储  const objectStore = db.createObjectStore("toDoList", {    keyPath: "taskTitle",  });  // 定义对象存储将包含的数据项  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 =    "已创建对象存储。";};// 创建一个要添加到对象存储中的新项目const newItem = [  {    taskTitle: "Walk dog",    hours: 19,    minutes: 30,    day: 24,    month: "December",    year: 2013,    notified: "no",  },];// 创建一个读写事务,准备添加数据const transaction = db.transaction(["toDoList"], "readwrite");// 当一切完成后,报告事务成功完成transaction.oncomplete = (event) => {  note.appendChild(document.createElement("li")).textContent = "事务完成。";};transaction.onerror = (event) => {  note.appendChild(document.createElement("li")).textContent =    "事务因错误而未能创建。不允许重复的项目。";};// 使用事务创建对象存储const objectStore = transaction.objectStore("toDoList");// 请求将 newItem 对象添加到对象存储中const objectStoreRequest = objectStore.add(newItem[0]);objectStoreRequest.onsuccess = (event) => {  note.appendChild(document.createElement("li")).textContent = "请求成功。";};

规范

Specification
Indexed Database API 3.0
# object-store-interface

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp