IDBDatabase: phương thức createObjectStore()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Note: This feature is available in Web Workers.

Phương thức createObjectStore() của giao diện IDBDatabase tạo và trả về một IDBObjectStore mới.

Phương thức này nhận tên của store cùng với một đối tượng tham số cho phép bạn xác định các thuộc tính tùy chọn quan trọng. Bạn có thể dùng thuộc tính này để định danh duy nhất từng object riêng lẻ trong store. Vì thuộc tính này là một định danh, nó nên là duy nhất cho mỗi object, và mỗi object nên có thuộc tính đó.

Phương thức này chỉ có thể được gọi trong một transaction versionchange.

Cú pháp

js
createObjectStore(name)
createObjectStore(name, options)

Tham số

name

Tên của object store mới sẽ được tạo. Lưu ý rằng có thể tạo object store với tên rỗng.

options Optional

Một đối tượng tùy chọn mà các thuộc tính của nó là tham số tùy chọn của phương thức. Nó bao gồm các thuộc tính sau:

keyPath Optional

Key path sẽ được dùng bởi object store mới. Nếu rỗng hoặc không được chỉ định, object store sẽ được tạo mà không có key path và sẽ dùng out-of-line keys. Bạn cũng có thể truyền một mảng làm keyPath.

autoIncrement Optional

Nếu true, object store có một key generator. Mặc định là false.

Giá trị trả về

Một IDBObjectStore mới.

Ngoại lệ

Phương thức này có thể ném một DOMException với name là một trong các loại sau:

ConstraintError DOMException

Được ném ra nếu một object store với tên đã cho (dựa trên so sánh phân biệt hoa thường) đã tồn tại trong cơ sở dữ liệu đang kết nối.

InvalidAccessError DOMException

Được ném ra nếu autoIncrement được đặt là true và keyPath là chuỗi rỗng hoặc một mảng.

InvalidStateError DOMException

Được ném ra nếu phương thức không được gọi từ callback của transaction versionchange.

SyntaxError

Được ném ra nếu tùy chọn keyPath chứa một key path không hợp lệ.

TransactionInactiveError DOMException

Được ném ra nếu một request được thực hiện trên cơ sở dữ liệu nguồn không tồn tại, ví dụ khi cơ sở dữ liệu đã bị xóa hoặc gỡ bỏ, hoặc nếu transaction nâng cấp liên quan đã hoàn tất hoặc đang xử lý một request.

Ví dụ

js
// Hãy mở cơ sở dữ liệu của chúng ta
const request = window.indexedDB.open("toDoList", 4);

// Trình xử lý này được gọi khi một phiên bản mới của cơ sở dữ liệu
// được tạo, hoặc chưa từng được tạo trước đó
// hoặc khi một số phiên bản mới được gửi vào bằng cách gọi
// window.indexedDB.open().
// Trình xử lý này chỉ được hỗ trợ trong các trình duyệt gần đây.
request.onupgradeneeded = (event) => {
  const db = event.target.result;

  db.onerror = (event) => {
    note.appendChild(document.createElement("li")).textContent =
      "Lỗi khi tải cơ sở dữ liệu.";
  };

  // Tạo objectStore cho cơ sở dữ liệu này

  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // xác định những mục dữ liệu mà objectStore sẽ chứa

  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 đã được tạo.";
};

Thông số kỹ thuật

Specification
Indexed Database API 3.0
# ref-for-dom-idbdatabase-createobjectstore①

Tương thích trình duyệt

Xem thêm