Start · Sprachen · JavaScript · Referenz · IDBDatabase.name

IDBDatabase.name

Eigenschaft

Schreibgeschützte Zeichenkette mit dem Namen der IndexedDB-Datenbank, zu der das <code>IDBDatabase</code>-Objekt verbunden ist.

seit JavaScript Baseline: alle Browser (IndexedDB 2.0) Kategorie: webapi

Signatur

IDBDatabase.name

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

Typ
string
Beschreibung
Der Name der verbundenen Datenbank, exakt so, wie er an 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})`);
};
Verbunden mit: notizen (Version 1)

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();
Bereit: shop-cache

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}`);
};
Gelöscht: temp-daten

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie db.name = 'neu' wird ignoriert (im Strict Mode TypeError). 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.