Comments (6)
Actually, this doesn't seem to be a bug at all. According to MDN, onclose
only fires on unexpected closes.
It sounds like your original use case is for upgrading a db when other connections are open. I believe what you want is onversionchange
, which fires "when a database structure change [...] was requested elsewhere"
from fakeindexeddb.
Do you have code? I tried to reproduce and found that, though the close
event handler isn't firing, db closing seems to work OK:
require('fake-indexeddb/auto');
indexedDB.deleteDatabase('mydb').onsuccess = event => {
const openreq = indexedDB.open('mydb', 1);
let db_connection;
openreq.onupgradeneeded = event => {
db_connection = event.target.result;
db_connection.onclose = () => console.log('closed');
};
openreq.onsuccess = event => {
db_connection.close();
const reopenreq = indexedDB.open('mydb', 2);
reopenreq.onupgradeneeded = () => console.log('modifying db');
reopenreq.onsuccess = () => console.log('db re-opened');
}
};
// 'closed' does not get logged, but 'modifying db' and then 'db re-opened' do
of course, the close
handler should be firing, so that's still a bug. Also fails with addEventListener('close', ...)
.
from fakeindexeddb.
@Quelklef Thanks for your help, I've resolved my problem. The confusion came from the failure of the onclose
event to fire. That's the only bug here. I'm closing this issue. You can create another one for the event bug.
from fakeindexeddb.
Great, will do!
from fakeindexeddb.
Thanks @Quelklef the reason my upgrade requests were blocked was because some of the open db instances didn't have the onversionchange handler. I initially thought the DB connections weren't closing since the onclose didn't fire but once I noticed the aforementioned discrepancy I was able to resolve the issue. That's why I said "I have resolved my problem"
from fakeindexeddb.
got it 👍 👌
from fakeindexeddb.
Related Issues (20)
- 3.1.6 regression: `ReferenceError: setImmediate is not defined` HOT 1
- orderBy support HOT 4
- initialize the DB before the use. HOT 2
- Add observation for Dexie users HOT 3
- [BUG] Context loosing for `FakeDOMStringList` members while wrapping IDB
- [BUG] Invalid behavior for concurrent insertion data HOT 1
- Ref of Observable from liveQuery is not reactive HOT 7
- fake-indexeddb fails when happy-dom is loaded prior to fake-indexeddb HOT 3
- Running this in Chrome throws "Cannot set property indexedDB of #<Window> which has only a getter" HOT 3
- Release new version to npm with latest types fix HOT 3
- DataCloneError: The data being stored could not be cloned by the internal structured cloning algorithm. HOT 2
- Problem storing and retrieving CryptoKeys HOT 2
- structuredClone and jsdom HOT 7
- `Uint8Array` keys don't respect offsets from underlying ArrayBuffers HOT 3
- Serializing (and restoring) the state of Fake IDB HOT 1
- Unable to use in tests that mock timers (e.g. overriding `globalThis.setImmediate`) HOT 6
- `IDBObjectStore.count` is `O(n^2)` HOT 3
- Try using built-in Node.js Blob HOT 1
- How to read one of the chrome database HOT 1
- A value which is actually Date, but instanceOf Date equals false when use with jest+jsdom. HOT 5
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 fakeindexeddb.