2016-07-23 21 views
9

Die Frage ist einfach, aber selbst durch eine erschöpfende Suche durch das Internet und die Pouchdb-Quelle konnte ich keine Funktion finden, um zu überprüfen, ob eine lokale Datenbank existiert.PouchDB überprüfen, ob lokale Datenbank existiert

Der Anwendungsfall dafür wäre, zu überprüfen, ob eine lokale Datenbank bereits existiert und dann eine erfolgreiche Anmeldung optional zu machen.

Mit freundlichen Grüßen

+0

Noch keine Lösung? – Costa

Antwort

5

Es ist in der Tat eine skip_setup Option zur Verfügung.

Wie in the documentation angegeben, wird PouchDB standardmäßig prüfen, ob die Datenbank existiert, und versuchen, sie zu erstellen, falls sie noch nicht existiert. Sie können diese Option auf true setzen, um diese Einstellung zu überspringen.

diese Option aktiviert ist, werden Sie eine Fehlermeldung erhalten, wenn die Datenbank nicht vorhanden ist, wenn Sie die Datenbank Informationen zum Beispiel abfragen:

const db = new PouchDb('DB_URL_OR_NAME', { skip_setup: true }); 

db.info() 
    .then(() => { 
    // The database exists. 
    // Do something... 
    }) 
    .catch(e => { 
    // No database found and it was not created. 
    // Do something else... 
    }); 
+0

Interessant. Ich habe info() ohne skip_setup ausprobiert, welches die Datenbank erstellt hat. Danke, dass du auf die Kombination hingewiesen hast. Klappt wunderbar. – Mythli

+4

In der Dokumentation wird angegeben, dass diese Option nur für entfernte Datenbanken verfügbar ist und diese Frage bezieht sich auf eine lokale Datenbank. Leider habe ich diese Option mit einer lokalen Datenbank versucht und es funktioniert nicht. – akofman

+0

@akofman immer noch keine Lösung? – Costa

4

Wie akofman wies darauf hin, skip_setup funktioniert nicht mit lokalen Datenbanken. Der einzige Weg, um dies zu tun, ist eine Problemumgehung. Ich überprüfe, ob die neue Datenbank leer ist und lösche sie sofort. Das hilft natürlich nicht, wenn die fragliche Datenbank existiert, aber leer ist ...

const testdb = new PouchDB('testdb_name'); 

testdb.info().then(function (details) { 
if (details.doc_count == 0 && details.update_seq == 0) { 
    alert ('database does not exist'); 
    testdb.destroy().then (function() {console.log('test db removed');}); 
} 
else alert ('database exists'); 
}) 
.catch(function (err) { 
    console.log('error: ' + err); 
return; 
});