Signatur
Beschreibung
Die Eigenschaft name des IDBDatabase-Interfaces liefert den Namen der Datenbank, der beim Öffnen über indexedDB.open(name, version) angegeben wurde. Der Wert ist schreibgeschützt und ändert sich während der Lebensdauer der Verbindung nicht.
Nützlich ist name vor allem dann, wenn eine Anwendung mit mehreren Datenbanken gleichzeitig arbeitet – etwa für Logging, Fehlermeldungen, das Verwalten eines Verbindungs-Pools oder um eine Datenbank später gezielt mit indexedDB.deleteDatabase(db.name) zu löschen.
Die Eigenschaft steht sofort zur Verfügung, sobald die Verbindung im success- oder upgradeneeded-Handler vorliegt. Auch nach db.close() bleibt der Wert lesbar.
Rückgabewert
indexedDB.open() übergeben wurde (Groß-/Kleinschreibung bleibt erhalten).Beispiele
Namen nach dem Öffnen ausgeben
const request = indexedDB.open('notizen', 1);
request.onupgradeneeded = (event) => {
const db = event.target.result;
db.createObjectStore('eintraege', { keyPath: 'id', autoIncrement: true });
};
request.onsuccess = (event) => {
const db = event.target.result;
console.log(`Verbunden mit: ${db.name} (Version ${db.version})`);
};
Promise-Wrapper mit aussagekräftigem Logging
const openDb = (name, version) =>
new Promise((resolve, reject) => {
const req = indexedDB.open(name, version);
req.onsuccess = () => resolve(req.result);
req.onerror = () => reject(req.error);
});
const main = async () => {
const db = await openDb('shop-cache', 1);
db.onversionchange = () => {
console.warn(`Datenbank "${db.name}" wird aktualisiert – Verbindung wird geschlossen.`);
db.close();
};
console.log('Bereit:', db.name);
};
main();
Datenbank über ihren Namen löschen
const resetDatabase = (db) =>
new Promise((resolve, reject) => {
const name = db.name; // Name bleibt auch nach close() lesbar
db.close();
const del = indexedDB.deleteDatabase(name);
del.onsuccess = () => resolve(name);
del.onerror = () => reject(del.error);
del.onblocked = () => console.warn(`Löschen von "${name}" blockiert – andere Tabs offen?`);
});
const req = indexedDB.open('temp-daten', 1);
req.onsuccess = async () => {
const geloescht = await resetDatabase(req.result);
console.log(`Gelöscht: ${geloescht}`);
};
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
db.name = 'neu'wird ignoriert (im Strict ModeTypeError). Eine Datenbank lässt sich nicht umbenennen – dazu müssen Daten in eine neue Datenbank kopiert und die alte gelöscht werden. - Datenbanknamen sind pro Origin eindeutig; gleiche Namen auf verschiedenen Domains bezeichnen unterschiedliche Datenbanken.
- Namen sind case-sensitiv:
'Notizen'und'notizen'sind zwei verschiedene Datenbanken. - Alle vorhandenen Datenbanknamen eines Origins liefert
indexedDB.databases()(in Firefox erst ab Version 126). - Die Eigenschaft wird in allen modernen Browsern sowie in Web Workern unterstützt; im privaten Modus älterer Browser kann IndexedDB eingeschränkt sein.