IDBFactory: phương thức open()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
Note: This feature is available in Web Workers.
Phương thức open() của giao diện IDBFactory yêu cầu mở một kết nối tới cơ sở dữ liệu.
Phương thức này ngay lập tức trả về một đối tượng IDBOpenDBRequest và thực hiện thao tác mở một cách bất đồng bộ.
Nếu thao tác thành công, một sự kiện success sẽ được kích hoạt trên đối tượng yêu cầu được trả về từ phương thức này, với thuộc tính result được đặt thành đối tượng IDBDatabase mới cho kết nối đó.
Có thể kích hoạt các sự kiện upgradeneeded, blocked hoặc versionchange.
Cú pháp
open(name)
open(name, version)
Tham số
name-
Tên của cơ sở dữ liệu.
versionOptional-
Tùy chọn. Phiên bản dùng để mở cơ sở dữ liệu. Nếu không cung cấp phiên bản và cơ sở dữ liệu đã tồn tại, thì một kết nối đến cơ sở dữ liệu sẽ được mở mà không thay đổi phiên bản của nó. Nếu không cung cấp phiên bản và cơ sở dữ liệu chưa tồn tại, thì nó sẽ được tạo với phiên bản
1.
Giá trị trả về
Một đối tượng IDBOpenDBRequest mà trên đó các sự kiện tiếp theo liên quan đến yêu cầu này sẽ được kích hoạt.
Nếu thao tác thành công, giá trị của thuộc tính result của yêu cầu là một đối tượng IDBDatabase đại diện cho kết nối tới cơ sở dữ liệu.
Ngoại lệ
TypeError-
Được ném ra nếu giá trị của
versionkhông phải là số lớn hơn0.
Ví dụ
Ví dụ gọi open với tham số version theo đặc tả hiện tại:
const request = window.indexedDB.open("toDoList", 4);
Trong đoạn mã sau, chúng ta tạo một yêu cầu mở cơ sở dữ liệu và thêm các trình xử lý cho trường hợp thành công và lỗi. Để xem ví dụ hoàn chỉnh đang hoạt động, hãy xem ứng dụng To-do Notifications của chúng tôi (Xem ví dụ trực tiếp).
const note = document.querySelector("ul");
// Hãy mở phiên bản 4 của cơ sở dữ liệu của chúng ta
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// hai trình xử lý sự kiện này xử lý việc cơ sở dữ liệu được mở
// thành công hoặc không
DBOpenRequest.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Lỗi khi tải cơ sở dữ liệu.";
};
DBOpenRequest.onsuccess = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Cơ sở dữ liệu đã được khởi tạo.";
// lưu kết quả mở cơ sở dữ liệu vào biến db
// Biến này sẽ được dùng nhiều về sau, cho việc mở
// transaction và các tác vụ tương tự.
db = DBOpenRequest.result;
};
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbfactory-open②> |
Tương thích trình duyệt
Xem thêm
- Dùng IndexedDB
- Hạn mức lưu trữ của trình duyệt và tiêu chí loại bỏ dữ liệu.
- Bắt đầu transaction:
IDBDatabase - Dùng transaction:
IDBTransaction - Thiết lập một phạm vi 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).