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
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.
optionsOptional-
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:
keyPathOptional-
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. autoIncrementOptional-
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:
ConstraintErrorDOMException-
Đượ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.
InvalidAccessErrorDOMException-
Được ném ra nếu
autoIncrementđược đặt là true vàkeyPathlà chuỗi rỗng hoặc một mảng. InvalidStateErrorDOMException-
Đượ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
keyPathchứa một key path không hợp lệ. TransactionInactiveErrorDOMException-
Đượ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ụ
// 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
- Dùng IndexedDB
- Bắt đầu transaction:
IDBDatabase - Dùng transaction:
IDBTransaction - Thiết lập một dải khóa:
IDBKeyRange - Truy xuất và thay đổi dữ liệu của bạn:
IDBObjectStore - Dùng cursor:
IDBCursor - Ví dụ tham khảo: To-do Notifications (Xem ví dụ trực tiếp).