Skip to content

Что это?

Это обёртка над стандартными API IndexedDB. Вот пример обычного кода с использованием Indexed DB:

ts
// Версию придётся проставлять вручную
const 
request
=
indexedDB
.
open
("app", 1);
request
.
onsuccess
= () => {
const
db
=
request
.
result
;
// Работа с базой const
usersStore
=
db
.
transaction
("users").
objectStore
("users");
const
usersRequest
=
usersStore
.
getAll
();
usersRequest
.
onsuccess
= () =>
console
.
log
(
usersRequest
.
result
);
};
request
.
onupgradeneeded
=
event
=> {
const
db
=
request
.
result
;
switch (
event
.
oldVersion
) {
case 0: { const
usersStore
=
db
.
createObjectStore
("users");
usersStore
.
createIndex
("id", "id");
break; } case 1: { const
postsStore
=
db
.
createObjectStore
("posts");
postsStore
.
createIndex
("id", "id");
const
unusedStore
=
db
.
createObjectStore
("unused_store");
break; } case 2: {
db
.
deleteObjectStore
("unused_store");
break; } // и т.д.. } };

А так ваш код может выглядеть с обёрткой:

ts
import { 
Database
,
Migrations
} from "@sx3/database";
const
migrations
:
Migrations
= [
{ 1:
builder
=>
builder
.
create
("users")
.
index
("id")
.
create
("posts")
.
index
("id")
.
create
("unused_store"),
2:
builder
=>
builder
.
drop
("unused_store"),
}, ]; // Версия рассчитывается исходя из миграций const
db
= new
Database
("mydb", {
migrations
});
await
db
.
open
();
const
usersStore
=
db
.
transaction
("users").
store
();
console
.
log
(await
usersStore
.
getAll
());

Нативные API доступны

ts
import { 
Database
} from "@sx3/database";
const
db
= new
Database
("mydb");
await
db
.
open
();
db
.
addEventListener
("abort", () => {});
db
.
deleteObjectStore
("users");
db
.
close
();
// и т.д.. const
trx
=
db
.
transaction
("users");
trx
.
objectStore
("users");
trx
.
addEventListener
("complete", () => {});
// и т.д..