Ersetzt von classic-level . Bitte beachten Sie die häufig gestellten Fragen.
db = leveldown(location)db.open([options, ]callback)optionsdb.close(callback)db.put(key, value[, options], callback)optionsdb.get(key[, options], callback)optionsdb.getMany(keys[, options][, callback])db.del(key[, options], callback)optionsdb.batch(operations[, options], callback) (Array -Formular)db.batch() (gekettete Form)db.approximateSize(start, end, callback)db.compactRange(start, end, callback)db.getProperty(property)db.iterator([options])db.clear([options, ]callback)chainedBatchchainedBatch.put(key, value)chainedBatch.del(key)chainedBatch.clear()chainedBatch.write([options, ]callback)chainedBatch.dbiteratorfor await...of iteratoriterator.next([callback])iterator.seek(key)iterator.end([callback])iterator.dbleveldown.destroy(location, callback)leveldown.repair(location, callback) Dieses Modul war ursprünglich Teil von levelup , wurde aber später extrahiert und dient nun als eigenständige Bindung für LevelDB.
Es wird dringend empfohlen , dass Sie levelup in Vorzug für leveldown verwenden, es sei denn, Sie haben messbare Leistungsgründe dafür. levelup ist für Benutzerfreundlichkeit und Sicherheit optimiert. Obwohl wir daran arbeiten, die Sicherheit der leveldown -Schnittstelle zu verbessern, ist es immer noch einfach, Ihren Knotenprozess zu stürzen, wenn Sie Dinge nicht richtig ausführen.
Weitere Einzelheiten zu bekannten unsicheren Operationen mit leveldown finden Sie den Abschnitt über Sicherheit.
Wir wollen mindestens aktive LTs und aktuelle Node.js-Releases, Electron 5.0.0 sowie alle zukünftigen Node.js und Electron Releases dank N-API unterstützen. Die minimale Knotenversion für leveldown ist 10.12.0 . Umgekehrt beträgt für Knoten> = 12 die minimale leveldown -Version 5.0.0 .
Das leveldown NPM-Paket wird mit vorgebauten Binärdateien für beliebte 64-Bit-Plattformen sowie Arm, M1, Android und Alpine (Musl) geliefert und ist bekannt dafür, dass an:
Bei der Installation leveldown prüft node-gyp-build ob eine kompatible Binärin vorhanden ist, und fällt auf einen Kompilierschritt, wenn dies nicht der Fall ist. In diesem Fall benötigen Sie eine gültige node-gyp Installation.
Wenn Sie die vorgefertigte Binärdatei für die Plattform, auf der Sie installiert werden, nicht verwenden möchten, geben Sie beim Installieren das Flag --build-from-source Flag an. Einer von:
npm install --build-from-source
npm install leveldown --build-from-source
Wenn Sie selbst an leveldown arbeiten und den C ++-Code neu kompilieren möchten, führen Sie npm run rebuild aus.
leveldown > = 5 haben. Dies kann durch Ausführen npm ls leveldown überprüft werden.leveldown entweder auf> = 5.3.0 aktualisieren oder verwenden --build-from-source .--build-from-source zu verwenden. Dies ist nicht mehr der Fall.nodejs-mobile Gabel erstellt und gebaut. Wenn Sie Upgrade durchführen: Siehe UPGRADING.md .
db = leveldown(location) Gibt eine neue leveldown -Instanz zurück. location ist eine Saite, die auf den zu öffnenden Standort auf den Leveldb zeigt.
db.open([options, ]callback) Öffnen Sie den Laden. Die callback wird ohne Argumente aufgerufen, wenn die Datenbank erfolgreich geöffnet wurde, oder mit einem einzigen error , wenn die offene Operation aus irgendeinem Grund ausfällt.
options Das Argument für optionale options kann enthalten:
createIfMissing (boolean, Standard: true ): Wenn true , wird eine leere Datenbank am angegebenen Ort initialisiert, wenn man noch nicht existiert. Wenn false und eine Datenbank nicht vorhanden sind, erhalten Sie einen Fehler in Ihrem open() -Rückruf und Ihre Datenbank wird nicht geöffnet.
errorIfExists (boolean, Standard: false ): Wenn true , erhalten Sie einen Fehler in Ihrem open() -Rückruf, wenn die Datenbank am angegebenen Ort vorhanden ist.
compression (Boolean, Standard: true ): Wenn true , werden alle komprimierbaren Daten durch den Snappy -Komprimierungsalgorithmus ausgeführt, bevor sie gespeichert werden. Snappy ist sehr schnell und sollte durch Deaktivieren nicht viel Geschwindigkeit gewinnen. Lassen Sie dies also eingeschaltet, es sei denn, Sie haben einen guten Grund, es auszuschalten.
cacheSize (Nummer, Standard: 8 * 1024 * 1024 = 8MB): Die Größe (in Bytes) des In-Memory-LRU-Cache mit häufig verwendeten unkomprimierten Blockgehaltern.
Erweiterte Optionen
Die folgenden Optionen sind für die fortgeschrittene Leistungsstimmung. Ändern Sie sie nur, wenn Sie den tatsächlichen Nutzen für Ihre spezielle Anwendung nachweisen können.
writeBufferSize (Nummer, Standardeinstellung: 4 * 1024 * 1024 = 4MB): Die maximale Größe (in Bytes) des Protokolls (im Speicher und in der .log -Datei auf der Festplatte gespeichert). Über diese Größe hinaus konvertiert LevelDB die Protokolldaten in die erste Ebene sortierter Tabellendateien. Aus der LevelDB -Dokumentation:Größere Werte erhöhen die Leistung, insbesondere bei Schüttlasten. Bis zu zwei Schreibpuffer können gleichzeitig im Speicher gehalten werden, sodass Sie diesen Parameter möglicherweise anpassen möchten, um die Speicherverwendung zu steuern. Außerdem führt ein größerer Schreibpuffer zu einer längeren Wiederherstellungszeit, wenn die Datenbank das nächste Mal geöffnet wird.
blockSize (Nummer, Standard 4096 = 4K): Die ungefähre Größe der Blöcke, aus denen die Tabellendateien bestehen. Die Größe im Zusammenhang mit unkomprimierten Daten (daher "ungefähr"). Die Blöcke sind in der Tabellendatei indiziert, und das Einstiegs-Lookups beinhaltet das Lesen eines gesamten Blocks und an Parsen, um den erforderlichen Eintrag zu ermitteln.
maxOpenFiles (Nummer, Standardeinstellung: 1000 ): Die maximale Anzahl von Dateien, die LevelDB gleichzeitig geöffnet haben dürfen. Wenn Ihr Datenspeicher wahrscheinlich über einen großen Arbeitssatz verfügt, können Sie diesen Wert erhöhen, um die Abwanderung des Dateideskriptors zu verhindern. Um die Anzahl der für Ihren Arbeitssatz erforderlichen Dateien zu berechnen, teilen Sie Ihre Gesamtdaten durch 'maxFileSize' auf.
blockRestartInterval (Nummer, Standardeinstellung: 16 ): Die Anzahl der Einträge vor dem Neustart der "Delta -Codierung" von Tasten in Blöcken. Jeder "Neustart" -Punkt speichert den vollständigen Schlüssel für den Eintrag zwischen Neustarts, das gemeinsame Präfix der Schlüssel für diese Einträge. Neustarts ähneln dem Konzept der Keyframes in der Videocodierung und werden verwendet, um die Menge an Platz zu minimieren, die zum Speichern von Schlüssel erforderlich ist. Dies ist besonders hilfreich, wenn Sie in Ihren Schlüsseln ein tiefes Namensspaziergang / Präfixen verwenden.
maxFileSize (Nummer, Standardeinstellung: 2* 1024 * 1024 = 2MB): Die maximale Menge an Bytes zum Schreiben in eine Datei, bevor Sie auf eine neue wechseln. Aus der LevelDB -Dokumentation:
... Wenn Ihr Dateisystem mit größeren Dateien effizienter ist, können Sie den Wert erhöhen. Der Nachteil sind längere Kompaktionen und damit längere Latenz-/Leistungschläge. Ein weiterer Grund, diesen Parameter zu erhöhen, könnte sein, wenn Sie zunächst eine große Datenbank bevölkern.
db.close(callback) close() ist eine Instanzmethode für ein vorhandenes Datenbankobjekt. Die zugrunde liegende LevelDB -Datenbank wird geschlossen und die callback wird ohne Argumente aufgerufen, wenn die Operation erfolgreich ist, oder mit einem einzigen error , wenn die Operation aus irgendeinem Grund ausfällt.
leveldown wartet, bis ein ausstehender Operationen vor dem Schließen abgeschlossen ist. Zum Beispiel:
db . put ( 'key' , 'value' , function ( err ) {
// This happens first
} )
db . close ( function ( err ) {
// This happens second
} )db.put(key, value[, options], callback)Speichern Sie einen neuen Eintrag oder überschreiben Sie einen vorhandenen Eintrag.
Die key und value können entweder Zeichenfolgen oder Puffer sein. Andere Objekttypen werden mit der Methode toString() in Zeichenfolgen konvertiert. Tasten dürfen nicht null oder undefined sein, und Objekte, die mit toString() konvertiert werden, sollten nicht zu einer leeren Saite führen. Werte dürfen nicht null oder undefined sein. Werte von '' , [] und Buffer.alloc(0) (und jedem Objekt, das zu einem toString() von diesen führt) werden als Zeichenarray mit Null-Länge-Array gespeichert und werden daher je nach angefordertem Typ als entweder '' oder Buffer.alloc(0) abgerufen.
Ein reichhaltigerer Satz von Datentypen ist in levelup für den Fall.
options Die einzige Eigenschaft, die derzeit im options verfügbar ist, ist sync (boolean, Standard: false ) . Wenn Sie in Ihrem options einen sync von true angeben, führt LevelDB eine synchrone Schreibweise der Daten durch. Obwohl die Operation in Bezug auf den Knoten asynchron ist. Normalerweise übergibt LevelDB die Daten zum Schreiben an das Betriebssystem und kehrt sofort zurück. Ein synchrones Schreiben verwendet fsync() oder gleichwertig, sodass Ihr Rückruf erst ausgelöst wird, wenn sich die Daten tatsächlich auf der Festplatte befinden. Synchronous -Dateisystem -Schreibvorgänge sind deutlich langsamer als asynchrone Schreibvorgänge, aber wenn Sie absolut sicher sein möchten, dass die Daten gespült sind, können Sie { sync: true } verwenden.
Die callback wird ohne Argumente aufgerufen, wenn die Operation erfolgreich ist, oder mit einem einzigen error , wenn die Operation aus irgendeinem Grund fehlgeschlagen ist.
db.get(key[, options], callback) Holen Sie sich einen Wert aus dem LevelDB -Store nach key .
Das key kann entweder eine Zeichenfolge oder ein Puffer sein und kann nicht undefined oder null sein. Andere Objekttypen werden mit der Methode toString() in Zeichenfolgen konvertiert, und die resultierende Zeichenfolge ist möglicherweise nicht eine Null-Länge. Ein reichhaltigerer Satz von Datentypen ist in levelup für den Fall.
Werte über get() abgerufen werden, die als Zeichenarrays mit String ( null , undefined , '' '' [] , Buffer.alloc(0) Buffer.alloc(0) ) gespeichert sind asBuffer: true
options Das optionale options kann enthalten:
asBuffer (Boolean, Standard: true ): Wird verwendet, um festzustellen, ob der value des Eintrags als Zeichenfolge oder Puffer zurückgegeben werden soll. Beachten Sie, dass das Konvertieren von einem Puffer in eine Zeichenfolge Kosten verursacht. Wenn Sie also eine Zeichenfolge benötigen (und der value kann zu einer UTF8 -Zeichenfolge werden), sollten Sie ihn als einen mit { asBuffer: false } abrufen, und Sie vermeiden diese Conversion -Kosten.fillCache (boolean, Standard: true ): LevelDB füllt standardmäßig den In-Memory-LRU-Cache mit Daten aus einem Aufruf zu, um zu erhalten. Deaktivieren Dies wird durchgeführt, indem fillCache auf false eingestellt wird. Die callback wird mit einem einzigen error aufgerufen, wenn die Operation aus irgendeinem Grund fehlschlägt, auch wenn der Schlüssel nicht gefunden wurde. Wenn erfolgreich ist, ist das erste Argument null und das zweite Argument ist der value als Zeichenfolge oder Puffer, abhängig von der asBuffer -Option.
db.getMany(keys[, options][, callback]) Holen Sie sich mehrere Werte aus dem Geschäft mit einer Reihe von keys . Das optionale options kann asBuffer und fillCache enthalten, wie in get() beschrieben.
Die callback wird mit einem Error aufgerufen, wenn die Operation aus irgendeinem Grund fehlschlägt. Wenn erfolgreich ist, ist das erste Argument null und das zweite Argument wird ein Wertearray mit der gleichen Reihenfolge wie keys sein. Wenn kein Schlüssel gefunden wurde, wird der relevante Wert undefined .
Wenn kein Rückruf erbracht wird, wird ein Versprechen zurückgegeben.
db.del(key[, options], callback) Einen Eintrag löschen. Das key kann entweder eine Zeichenfolge oder ein Puffer sein und kann nicht undefined oder null sein. Andere Objekttypen werden mit der Methode toString() in Zeichenfolgen konvertiert, und die resultierende Zeichenfolge ist möglicherweise nicht eine Null-Länge. Ein reichhaltigerer Satz von Datentypen ist in levelup für den Fall.
options Die einzige Eigenschaft, die derzeit im options verfügbar ist, ist sync (boolean, Standard: false ) . Weitere Informationen zu dieser Option finden Sie in db.put() .
Die callback wird ohne Argumente aufgerufen, wenn die Operation erfolgreich ist, oder mit einem einzigen error , wenn die Operation aus irgendeinem Grund fehlgeschlagen ist.
db.batch(operations[, options], callback) (Array -Formular) Führen Sie mehrere Put- und/oder DEL -Operationen in loser Schüttung aus. Das operations muss ein Array sein, das eine Liste von Operationen enthält, die nacheinander ausgeführt werden sollen, obwohl sie als Ganzes als Atomoperation durchgeführt werden.
Jede Operation ist in einem Objekt mit den folgenden Eigenschaften enthalten: type , key , value , wobei der type entweder 'put' oder 'del' ist. Im Fall von 'del' wird die value ignoriert.
Alle Einträge, bei denen der key oder value (im Fall von 'put' ) null oder undefined ist, führt zu einem Fehler, der auf den callback zurückgegeben wird. Alle Einträge, bei denen der type 'put' ist, das einen value von [] , '' oder Buffer.alloc(0) hat, werden als Zeichenarray mit Nulllänge gespeichert und daher während der Reads als '' oder Buffer.alloc(0) abgeholt, je nachdem, wie sie angefordert werden. levelup finden Sie die vollständige Dokumentation darüber, wie dies in der Praxis funktioniert.
Das Argument für optionale options kann enthalten:
sync (boolean, Standard: false ). Weitere Informationen zu dieser Option finden Sie in db.put() . Die callback wird ohne Argumente aufgerufen, wenn die Stapel erfolgreich ist, oder mit einem Error , wenn die Charge aus irgendeinem Grund fehlgeschlagen ist.
db.batch() (gekettete Form) Gibt eine neue chainedBatch -Instanz zurück.
db.approximateSize(start, end, callback) approximateSize() ist eine Instanzmethode für ein vorhandenes Datenbankobjekt. Wird verwendet, um die ungefähre Anzahl von Bytes des vom Bereich verwendeten Dateisystemraums zu erhalten [start..end) . Das Ergebnis enthält möglicherweise keine kürzlich schriftlichen Daten.
Die start und end können Zeichenfolgen oder Puffer sein, die Schlüssel im LevelDB -Store darstellen.
Die callback wird mit einem einzigen error aufgerufen, wenn die Operation aus irgendeinem Grund fehlgeschlagen ist. Wenn er erfolgreich ist, ist das erste Argument null und das zweite Argument wird die ungefähre Größe als Zahl sein.
db.compactRange(start, end, callback) compactRange() ist eine Instanzmethode für ein vorhandenes Datenbankobjekt. Wird verwendet, um eine Datenbankverdichtung im Bereich manuell auszulösen [start..end) .
Die start und end können Zeichenfolgen oder Puffer sein, die Schlüssel im LevelDB -Store darstellen.
Die callback wird ohne Argumente aufgerufen, wenn die Operation erfolgreich ist, oder mit einem einzigen error , wenn die Operation aus irgendeinem Grund fehlgeschlagen ist.
db.getProperty(property) getProperty kann verwendet werden, um interne Details von LevelDB zu erhalten. Bei einer gültigen Eigenschaftszeichenfolge wird eine lesbare Zeichenfolge zurückgegeben (diese Methode ist synchron).
Derzeit sind die einzigen gültigen Eigenschaften:
leveldb.num-files-at-levelN : Geben Sie die Anzahl der Dateien auf Level N zurück, wobei n eine Ganzzahl ist, die eine gültige Ebene darstellt (z. B. "0").
leveldb.stats : Gibt eine Multi-Line-Zeichenfolge zurück, in der Statistiken zum internen Betrieb von LevelDB beschrieben werden.
leveldb.sstables : Gibt eine Multi-Line-Zeichenfolge zurück, in der alle SSTables beschrieben werden, die den Inhalt der aktuellen Datenbank ausmachen.
db.iterator([options]) Gibt eine neue iterator zurück. Akzeptiert die folgenden Bereichsoptionen:
gt (größer als), gte (größer oder gleich) definieren die untere Grenze des zu iterierten Bereichs. Nur Einträge, bei denen der Schlüssel größer ist als (oder gleich). Diese Option wird im Bereich enthalten. Wenn reverse=true die Reihenfolge umgekehrt wird, aber die iterierten Einträge sind gleich.lt (weniger als) definieren lte (weniger oder gleich) die höhere Grenze des zu iterierten Bereichs. Nur Einträge, bei denen der Schlüssel geringer ist als (oder gleich). Diese Option wird im Bereich enthalten. Wenn reverse=true die Reihenfolge umgekehrt wird, aber die iterierten Einträge sind gleich.reverse (boolean, Standard: false ) : Iterate Einträge in umgekehrter Reihenfolge. Achten Sie darauf, dass eine umgekehrte Suche langsamer sein kann als eine Vorwärtssuche.limit (Nummer, Standard: -1 ) : Begrenzen Sie die Anzahl der von diesem Iterator gesammelten Einträge. Diese Zahl stellt eine maximale Anzahl von Einträgen dar und kann möglicherweise nicht erreicht werden, wenn Sie zuerst am Ende des Bereichs erreichen. Ein Wert von -1 bedeutet, dass es keine Grenze gibt. Wenn reverse=true die Einträge mit den höchsten Schlüssel anstelle der niedrigsten Schlüssel zurückgegeben werden. Zusätzlich zu den Reichweitenoptionen nutzt iterator() die folgenden Optionen:
keys (boolean, Standard: true ) : Ob die Taste jedes Eintrags zurückgibt. Wenn Sie auf false festgelegt sind, werden Anrufe bei iterator.next(callback) mit einem Wert von undefined 1 ergeben. Es gibt einen kleinen Effizienzgewinn, wenn Sie letztendlich egal sind, was die Schlüssel sind, da sie nicht umgewandelt und in JavaScript kopiert werden müssen.values (boolean, Standard: true ) : Ob der Wert jedes Eintrags zurückgibt. Wenn Sie auf false festgelegt sind, werden Anrufe bei iterator.next(callback) mit einem Wert von undefined 1 geliefert.keyAsBuffer (boolean, Standard: true ) : Ob die Taste jedes Eintrags als Puffer oder String zurückgibt. key Sie von einem Puffer in eine Zeichenfolge konvertiert werden, werden sie Kosten angelegt.valueAsBuffer (Boolean, Standard: true ) : Ob der Wert jedes Eintrags als Puffer oder String zurückgibt.fillCache (Boolean, Standard: false ): Ob LevelDBs LRU-Cache mit Daten gelesen werden sollte. 1 leveldown gibt momentan eher eine leere Zeichenfolge als undefined .
db.clear([options, ]callback)Löschen Sie alle Einträge oder einen Bereich. Nicht garantiert atomar. Akzeptiert die folgenden Bereichsoptionen (mit den gleichen Regeln wie bei Iteratoren):
gt (größer als), gte (größer als oder gleich) definieren die untere Grenze des zu gelöschenden Bereichs. Nur Einträge, bei denen der Schlüssel größer ist als (oder gleich). Diese Option wird im Bereich enthalten. Wenn reverse=true die Reihenfolge umgekehrt wird, aber die gelöschten Einträge sind gleich.lt (weniger als) definieren lte (weniger oder gleich) die höhere Grenze des zu gelöschenden Bereichs. Nur Einträge, bei denen der Schlüssel geringer ist als (oder gleich). Diese Option wird im Bereich enthalten. Wenn reverse=true die Reihenfolge umgekehrt wird, aber die gelöschten Einträge sind gleich.reverse (boolean, Standard: false ) : Einträge in umgekehrter Reihenfolge löschen. Nur effektiv in Kombination mit limit , um die letzten n -Einträge zu entfernen.limit (Nummer, Standard: -1 ) : Begrenzen Sie die Anzahl der zu gelöschten Einträge. Diese Zahl stellt eine maximale Anzahl von Einträgen dar und kann möglicherweise nicht erreicht werden, wenn Sie zuerst am Ende des Bereichs erreichen. Ein Wert von -1 bedeutet, dass es keine Grenze gibt. Wenn reverse=true die Einträge mit den höchsten Schlüssel anstelle der niedrigsten Schlüssel gelöscht werden. Wenn keine Optionen bereitgestellt werden, werden alle Einträge gelöscht. Die callback wird ohne Argumente aufgerufen, wenn die Operation erfolgreich war, oder mit einem Error , wenn sie aus irgendeinem Grund fehlgeschlagen ist.
chainedBatchchainedBatch.put(key, value) Queue eine put -Operation auf dieser Charge. Dies kann werfen, wenn key oder value ungültig ist, und folgt den gleichen Regeln wie die Array -Form von db.batch() .
chainedBatch.del(key) Warten Sie eine del -Operation auf dieser Stapel. Dies kann werfen, wenn key ungültig ist.
chainedBatch.clear()Löschen Sie alle Vorgänge in der Warteschlange auf dieser Stapel.
chainedBatch.write([options, ]callback)Beiten Sie die Warteschlangenvorgänge für diese Stapel. Alle Operationen werden atomisch geschrieben, das heißt, sie werden entweder alle Erfolg haben oder ohne teilweise Commits scheitern.
Das Argument für optionale options kann enthalten:
sync (boolean, Standard: false ). Weitere Informationen zu dieser Option finden Sie in db.put() . Die callback wird ohne Argumente aufgerufen, wenn die Stapel erfolgreich ist, oder mit einem Error , wenn die Charge aus irgendeinem Grund fehlgeschlagen ist. Nachdem write aufgerufen wurde, sind keine weiteren Operationen zulässig.
chainedBatch.db Ein Verweis auf die db , die diese angekettete Stapel erstellt hat.
iterator Mit einem Iterator können Sie den gesamten Laden oder eine Reichweite iterieren . Es arbeitet auf einem Schnappschuss des Geschäfts, der zum Zeitpunkt der Aufschrift db.iterator() erstellt wurde. Dies bedeutet, dass Lesevorgänge über den Iterator von gleichzeitigen Schreibvorgängen nicht beeinflusst werden.
Iteratoren können for await...of oder durch manuelles Rufen von iterator.next() in Folge. Im letzteren Modus muss iterator.end() immer aufgerufen werden. Im Gegensatz dazu ruft das Fertigstellen, Werfen oder Brechen von A for await...of Loop automatisch iterator.end() .
Ein Iterator erreicht in den folgenden Situationen sein natürliches Ende:
iterator.seek() war außerhalb der Reichweite. Ein Iterator verfolgt, wann ein next() im Gange ist und wann ein end() aufgerufen wurde, sodass dies nicht zulässt, dass next() Anrufe gleichzeitig () Anrufe ermöglicht, end() , während ein next() im Gange ist und weder als next() oder end() nach end() aufgerufen wurde.
for await...of iterator Ergibt Arrays mit key und value . Die Art von key und value hängt von den Optionen ab, die an db.iterator() übergeben wurden.
try {
for await ( const [ key , value ] of db . iterator ( ) ) {
console . log ( key )
}
} catch ( err ) {
console . error ( err )
} iterator.next([callback]) Fördern Sie den Iterator und geben Sie den Eintrag in diesem Schlüssel. Wenn ein Fehler auftritt, wird die callback mit einem Error aufgerufen. Andernfalls empfängt der callback null , einen key und einen value . Die Art von key und value hängt von den Optionen ab, die an db.iterator() übergeben wurden. Wenn der Iterator sein natürliches Ende erreicht hat, werden sowohl key als auch value undefined .
Wenn kein Rückruf vorgelegt wird, wird ein Versprechen für ein Array (mit einem key und value ) oder undefined zurückgegeben, wenn der Iterator sein natürliches Ende erreicht hat.
Hinweis: Rufen Sie immer iterator.end() , auch wenn Sie einen Fehler erhalten haben und auch wenn der Iterator sein natürliches Ende erreicht hat.
iterator.seek(key) Suchen Sie den Iterator zu einem bestimmten Schlüssel oder zu dem nächsten Schlüssel. Nachfolgende Aufrufe an iterator.next() ergeben Einträge mit Schlüssel, die gleich oder größer als target sind oder gleich oder kleiner als target , wenn die reverse Option an db.iterator() wahr ist. Gleiches gilt für implizite iterator.next() ruft in a for await...of Schleife auf.
Wenn Reichweite wie gt an db.iterator() übergeben wurde und target nicht in diesen Bereich fällt, erreicht der Iterator sein natürliches Ende.
iterator.end([callback]) Ende Iteration und frei liegende Ressourcen frei. Die callback wird ohne Argumente zum Erfolg oder mit einem Error aufgerufen, wenn das Ende aus irgendeinem Grund fehlgeschlagen ist.
Wenn kein Rückruf erbracht wird, wird ein Versprechen zurückgegeben.
iterator.db Ein Verweis auf die db , die diesen Iterator erstellt hat.
leveldown.destroy(location, callback) Entfernen Sie ein vorhandenes LevelDB -Datenbankverzeichnis vollständig. Sie können diese Funktion anstelle eines vollständigen Verzeichnisses rm verwenden, wenn Sie nur sicherstellen möchten, dass sie LevelDB-bezogene Dateien entfernen. Wenn das Verzeichnis nur LevelDB -Dateien enthält, wird auch das Verzeichnis selbst entfernt. Wenn es zusätzliche, nicht-LevelDB-Dateien im Verzeichnis gibt, werden diese Dateien und das Verzeichnis in Ruhe gelassen.
Der Rückruf wird aufgerufen, wenn die Zerstörungsoperation abgeschlossen ist, mit einem möglichen error .
leveldown.repair(location, callback)Versuchen Sie eine Wiederherstellung eines beschädigten LevelDB -Ladens. Aus der LevelDB -Dokumentation:
Wenn ein DB nicht geöffnet werden kann, können Sie versuchen, diese Methode so zu bezeichnen, dass die Datenbank so viel wie möglich in den Inhalt der Datenbank wieder aufgenommen werden kann. Einige Daten können verloren gehen. Seien Sie also vorsichtig, wenn Sie diese Funktion in einer Datenbank aufrufen, die wichtige Informationen enthält.
Sie finden Informationen zur Reparaturoperation in der Protokolldatei im Store -Verzeichnis.
Eine repair() kann auch verwendet werden, um eine Verdichtung des LevelDB -Anmeldes in Tabellendateien durchzuführen.
Der Rückruf wird aufgerufen, wenn die Reparaturoperation abgeschlossen ist, mit einem möglichen error .
Derzeit verfolgt leveldown nicht den Zustand der zugrunde liegenden LevelDB -Instanz. Dies bedeutet, dass das Aufrufen von open() in einer bereits offenen Datenbank zu einem Fehler führen kann. Ebenso kann das Aufrufen einer anderen Operation in einer nicht geöffneten Datenbank zu einem Fehler führen.
levelup verfolgt und verwaltet den Status und verhindern, dass außerhalb des Staates Operationen an leveldown gesendet werden. Wenn Sie leveldown direkt verwenden, müssen Sie Status selbst verfolgen und verwalten.
leveldown zeigt eine Funktion von LevelDB namens Snapshots. Dies bedeutet, dass bei EG createReadStream und createWriteStream gleichzeitig alle vom Schreibstrom modifizierten Daten keine Auswirkungen haben, die aus dem Lesestrom emittiert werden. Mit anderen Worten, ein LevelDB -Snapshot erfasst den neuesten Status zum Zeitpunkt des Erstellens des Snapshots, sodass der Snapshot die Daten iterieren oder lesen kann, ohne nachfolgende Schreibvorgänge zu sehen. Jede Lesen, die nicht auf einem Schnappschuss durchgeführt wird, wird implizit den neuesten Zustand verwenden.
Sie können ein Problem im Github -Repository eröffnen, wenn Sie eine Frage haben.
Zu den vergangenen und nicht mehr aktiven Support -Kanälen gehören der ##leveldb IRC -Kanal auf Freenode und die Node.js LevelDB Google Group.
Level/leveldown ist ein Open -Open -Source -Projekt . Das bedeutet, dass:
Personen, die erhebliche und wertvolle Beiträge leisten, erhalten das Projekt, um den Beitrag zu leisten, wie sie es für richtig halten. Dieses Projekt ähnelt eher ein offenes Wiki als ein Standardprojekt mit Standard -bewachtem Open -Source -Projekt.
Weitere Informationen finden Sie im Beitragshandbuch.
Dieses Projekt verwendet Git -Submodule. Dies bedeutet, dass Sie es rekursiv klonen sollten, wenn Sie vorhaben, daran zu arbeiten:
$ git clone --recurse-submodules https://github.com/Level/leveldown.gitAlternativ können Sie Submodule im geklonten Ordner initialisieren:
$ git submodule update --init --recursivenpm version ..git push --follow-tags./prebuilds : npm run download-prebuildsnpm run test-prebuildcanadian-pubnpm publish Unterstützen Sie uns mit einer monatlichen Spende für Open Collective und helfen Sie uns, unsere Arbeit fortzusetzen.
MIT
leveldown baut auf der hervorragenden Arbeit der LevelDB- und Snappy -Teams von Google und zusätzlichen Mitwirkenden auf. LevelDB und Snappy werden beide im Rahmen der neuen BSD -Lizenz ausgestellt. Ein großer Teil der leveldown -Windows -Unterstützung stammt aus dem Windows LevelDB -Anschluss (archiviert) von Krzysztof Kowalczyk ( @kjk ). Wenn Sie leveldown unter Windows verwenden, sollten Sie ihm Ihren Dank geben!