Opening an instance requires a config object.
Note: Once the dbName is declared with an instance the keyPath is then tied to it and cannot change without changing
the version number.
const IDBUtility: {
add: (storeName: string, value: {}) => Promise<string | Request.result>;
put: (storeName: string, value: {}) => Promise<string | Request.result>;
update: (storeName: string, keyValue: string, value: {}) => Promise<string | Request.result>;
get: (storeName: string, keyValue: string) => Promise<{[keyPath]: string , ...{}} | Request.result>;
getAll: (storeName: string) => Promise<{}>;
remove: (storeName: string, keyValue: string) => Promise<void | Request.result>;
}
import { openIDBUtilities } from 'indexed-db-utilities/dist/utilities/index-db.utility';
async function demo() {
const stores = await openIDBUtilities({
version: 1,
dbName: 'DemoIDB-1',
storeNames: ['demoStore0', 'demoStore1'],
keyPath: 'myKey'
});
const addResponse = await stores.add(
'demoStore0',
{
myKey: 'foo',
value: [{ bat: 'squeak'}, {bear: 'grrr'}]
})
.catch(err => console.log('Add Error', err));
let getResponse = await stores.get('demoStore0', 'foo');
const putResponse = await stores.put(
'demoStore0',
{
myKey: 'foo',
value: [{ cat: 'meow'}]
});
const updateResponse = await stores.update(
'demoStore0',
'foo',
{
myKey: 'foo',
value: [{ bat: 'squeak'}, {bear: 'grrr', dog: ['woof', 'bark']}, {cat: 'purr'}, ['happy hacking!']]
});
for (let i = 0; i < 10; i++) {
await stores.put('demoStore0', {
myKey: i.toString(),
value: i
})
}
const getAllResponse = await stores.getAll('demoStore0');
const removeResponse = await stores.remove('demoStore0', 'foo')
.catch(err => console.log('remove error', err));
}
import { openIDBUtilities } from 'indexed-db-utilities/dist/utilities/index-db.utility';
async function offlineCache() {
const cache = await openIDBUtilities({
version: 1,
dbName: 'DemoIDB-1',
storeNames: ['demoStore0', 'demoStore1'],
keyPath: 'myKey'
});
cache.add('demoStore1', {myKey: 'foo', bat: 'squeak'});
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<h1>Demo</h1>
<script src="/node_modules/indexed-db-utilities/dist/indexed-db-utilities.js"></script>
<script>
const stores = openIDBUtilities({
version: 1,
dbName: 'DemoIDB-1',
storeNames: ['demoStore0', 'demoStore1'],
keyPath: 'myKey'
});
stores.then(db => {
const addResponse = db.add('demoStore1', {myKey: 'foo', bat: 'squeak'});
console.log('addResponse', addResponse);
});
</script>
</body>
</html>