דלג לתוכן הראשי

IndexedDB

1. Minimal code for console

Create a new ObjectStore (a table:)

function createDB(dbName, tableName){
if(!dbName || !tableName) throw new Error('dbName & tableName are required params')

const request = indexedDB.open(dbName, 1);

request.onupgradeneeded = function(event) {
const db = event.target.result;
db.createObjectStore(tableName, { keyPath: 'id', autoIncrement: false });
};
}

Add 1 record:

function addRecord(dbName, tableName, data) {
return new Promise((resolve) => {
if (!dbName || !tableName || !data) throw new Error('dbName & tableName & data are required params');

const request = indexedDB.open(dbName, 1);

request.onsuccess = (event) => {
const db = event.target.result;
const transaction = db.transaction(tableName, 'readwrite');
const store = transaction.objectStore(tableName);
const addRequest = store.add(data);

addRequest.onsuccess = () => {
resolve(addRequest.result);
};
};
});
}

Get all records:

function getAll(dbName, tableName) {
return new Promise((resolve) => {
if (!dbName || !tableName) throw new Error('dbName & tableName are required params');

const request = indexedDB.open(dbName, 1);

request.onsuccess = (event) => {
const db = event.target.result;
const transaction = db.transaction(tableName, 'readonly');
const store = transaction.objectStore(tableName);
const getAllRequest = store.getAll();

getAllRequest.onsuccess = () => {
resolve(getAllRequest.result);
};
};
});
}

Get 1 records by id:

function getRecordById(dbName, tableName, id) {
return new Promise((resolve) => {
if (!dbName || !tableName || !id) throw new Error('dbName & tableName & id are required params');

const request = indexedDB.open(dbName, 1);

request.onsuccess = (event) => {
const db = event.target.result;
const transaction = db.transaction(tableName, 'readonly');
const store = transaction.objectStore(tableName);
const getAllRequest = store.get(id);

getAllRequest.onsuccess = () => {
resolve(getAllRequest.result);
};
};
});
}