Comments (5)
I partially misread the title of this issue, my bad! The problem I've been trying to solve relates to delete
, but this also relates to open
. I'll go ahead and make the PR for both 😄
from idb.
Ohh cheers, will take a look
from idb.
I also noticed this bug. I'll go ahead and make the PR.
from idb.
I iterated through several APIs, I've listed my two final options below for review. So far, I am leaning towards the first option, which is simple but has a small caveat.
1. idb.delete(name) throwable
Behaves like indexedDB.deleteDatabase
, but returns a promise.
If the database is in use (i.e. still open), an error will be thrown. Once all related database connections are closed, IndexedDB will automatically delete the database.
const db = await idb.open('keyvale-store', 1, upgradeFunc);
try {
await idb.delete('keyval-store'); // throws new Error('Database still in use')
} catch (err) {
db.close();
}
This is the simplest option, simply rejecting the promise. The caveat is that users might try to delete the database again after closing all connections to it; however, deleting a non-existent database does not result in error and is harmless from what I can tell.
const db = await idb.open('keyvale-store', 1, upgradeFunc);
try {
await idb.delete('keyval-store'); // throws new Error('Database still in use')
} catch (err) {
db.close(); // database is deleted shortly after this call
await idb.delete('keyval-store'); // does nothing, resolves successfully
}
2. idb.delete(name, blockedCallback?) throwable
Behaves like indexedDB.deleteDatabase
, but returns a promise.
If the database is in use (i.e. still open), the callback is expected to close it.
An error will be thrown if a callback is not specified.
const db = await idb.open('keyvale-store', 1, upgradeFunc);
await idb.delete('keyval-store'); // throws new Error('Database still in use')
await idb.delete('keyval-store', () => {
db.close(); // database is deleted shortly after this call
});
This option is in response to the caveat of option 1, but adds the possibility of doing the following:
const db = await idb.open('keyvale-store', 1, upgradeFunc);
await idb.delete('keyval-store', () => {}); // doesn't throw error, resolves successfully
from idb.
This is fixed in v4
from idb.
Related Issues (20)
- No able create more the 5 table object in Indexdb
- egronomic way to provide schema via JSDoc
- ConstraintError: Key already exists in the object store. HOT 2
- Not able to import openDB from idb/with-async-ittr in Ver 8
- Comment confusing `unlisten`
- delete only takes key as string but autoincremented keys are numbers HOT 1
- When I try to use main.js in my app I get a referenc eerror-
- DeleteDB should call Close() HOT 5
- How order for getAllFromIndex
- TS declaration error: Type 'IndexNames<DBTypes, StoreName>' does not satisfy the constraint 'string' HOT 15
- Types exports are incorrect in package.json
- Add type exports for openDB callbacks
- TypeError: Invalid value used as weak map key. when my value is `NaN`
- Remove Add Event Listeners?
- Is the nativescript browser compatible with this library?
- "No overload matches this call" when passing the store name as a variable
- `done` promise semantics is confusing and may cause uncaught promise rejections HOT 2
- cursor.continue(key) can hang? HOT 1
- After using idb, the IDBRequest's onsuccess & onerror will not be called
- cannot unwrap db
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from idb.