IDBFactory: phương thức databases()
Baseline
2024
Newly available
Since May 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Note: This feature is available in Web Workers.
Phương thức databases của giao diện IDBFactory trả về một Promise được fulfill với một mảng các đối tượng chứa tên và phiên bản của tất cả các cơ sở dữ liệu hiện có.
Đây là một ảnh chụp nhanh của các cơ sở dữ liệu, chủ yếu nhằm cho phép ứng dụng web kiểm tra xem những cơ sở dữ liệu nào đã được tạo, để ví dụ như dọn dẹp các cơ sở dữ liệu do những phiên bản trước của mã ứng dụng tạo ra.
Cú pháp
databases()
Tham số
Không có.
Giá trị trả về
Một Promise được fulfill với một mảng các đối tượng đại diện cho ảnh chụp nhanh của các cơ sở dữ liệu hiện có, hoặc bị reject với lỗi/ngoại lệ bên dưới.
Mỗi đối tượng trong mảng có các thuộc tính sau:
Lưu ý rằng thứ tự của các đối tượng được trả về là không xác định.
Ngoại lệ
SecurityErrorDOMException-
Được ném ra nếu phương thức được gọi từ một origin mờ đục hoặc người dùng đã tắt lưu trữ.
UnknownErrorDOMException-
Được ném ra nếu không thể xác định tập hợp các cơ sở dữ liệu hiện có vì bất kỳ lý do gì.
Ví dụ
>Tạo và liệt kê cơ sở dữ liệu
Ví dụ này tạo/mở một số cơ sở dữ liệu. Khi mỗi cơ sở dữ liệu khởi tạo thành công, nó sẽ liệt kê tất cả các cơ sở dữ liệu hiện có.
JavaScript
Trước tiên chúng ta định nghĩa hàm được dùng để lấy và ghi log các cơ sở dữ liệu hiện có.
Hàm này chờ promise do indexedDB.databases() trả về rồi lặp qua mảng và ghi lại giá trị của từng phần tử:
async function getDb() {
const databases = await indexedDB.databases();
log("Danh sách cơ sở dữ liệu:");
databases.forEach((element) => {
log(`name: ${element.name}, version: ${element.version}`);
});
}
Để minh họa cách dùng hàm trên, bên dưới chúng ta tạo hai cơ sở dữ liệu. Với mỗi cơ sở dữ liệu, chúng ta ghi log ngay trước khi mở nó. Chúng ta cũng ghi log khi khởi tạo thành công (hoặc lỗi), rồi tiếp tục ghi log các cơ sở dữ liệu hiện có.
// Tạo cơ sở dữ liệu có tên toDoList với phiên bản mặc định (1)
const dbName1 = "toDoList";
log(`Đang mở: ${dbName1}`);
let DBOpenRequest = window.indexedDB.open(dbName1);
DBOpenRequest.addEventListener("error", (event) => {
log(`Lỗi khi mở: ${dbName1}`);
getDb();
});
DBOpenRequest.addEventListener("success", (event) => {
log(`Đã khởi tạo: ${dbName1}`);
getDb();
});
// Tạo cơ sở dữ liệu "AnotherDb"
const dbName2 = "AnotherDb";
log(`Đang mở ${dbName2}`);
DBOpenRequest = window.indexedDB.open(dbName2, 2);
DBOpenRequest.addEventListener("error", (event) => {
log(`Lỗi khi mở: ${dbName2}`);
getDb();
});
DBOpenRequest.addEventListener("success", (event) => {
log(`Đã khởi tạo: ${dbName2}`);
getDb();
});
Kết quả
Kết quả được hiển thị bên dưới. Lưu ý rằng thời gian cần để lấy danh sách cơ sở dữ liệu và thứ tự của chúng là không xác định.
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbfactory-databases①> |
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 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).