Json Javascript-Datenbank für Node.js, Electron und Browser
lowdb ist eine kleine lokale JSON-Datenbank von Lodash (unterstützt Node, Electron und den Browser)
Installieren
npm install lowdb
Alternativ, wenn Sie Garn verwenden
yarn add lowdb
Ein UMD-Build ist auch auf unpkg zum Testen und schnellen Prototyping verfügbar:
var adapter = new LocalStorage('db') var db = low(adapter)
So verwenden Sie LowDB
db.get('posts') .push({ id: 1, title: 'lowdb is awesome'}) .write()
const low = require('lowdb') const FileSync = require('lowdb/adapters/FileSync') const adapter = new FileSync('db.json') const db = low(adapter) // Set some defaults (required if your JSON file is empty) db.defaults({ posts: [], user: {}, count: 0 }) .write() // Add a post db.get('posts') .push({ id: 1, title: 'lowdb is awesome'}) .write() // Set a user using Lodash shorthand syntax db.set('user.name', 'typicode') .write() // Increment count db.update('count', n => n + 1) .write()
Daten werden in |_+_| . gespeichert
db.json
Sie können jede der leistungsstarken lodash Funktionen wie |_+_| und |_+_| mit Abkürzungssyntax.
{ 'posts': [ { 'id': 1, 'title': 'lowdb is awesome'} ], 'user': { 'name': 'typicode' }, 'count': 1 }
Lowdb ist perfekt für CLIs, kleine Server, Electron-Apps und npm-Pakete im Allgemeinen.
Es unterstützt Node, den Browser und verwendet die Lodash-API, sodass es sehr einfach zu erlernen ist. Eigentlich, wenn du weißt Lodash , du weißt bereits, wie man es benutzt lowdb
Wichtig lowdb unterstützt Cluster nicht und kann Probleme mit sehr großen JSON-Dateien (~200 MB) haben.
FEUER
niedrig (Adapter)
Gibt einen Lodash zurück Kette mit zusätzlichen Eigenschaften und Funktionen, die unten beschrieben werden.
db.[…].write() und db.[…].value()
|_+_| schreibt Datenbank in den Zustand.
Auf der anderen Seite |_+_| ist nur _.prototyp.wert() und sollte verwendet werden, um eine Kette auszuführen, die den Datenbankstatus nicht ändert.
_.get
Bitte beachten Sie, dass |_+_| ist syntaktischer Zucker und entspricht
_.find
db. _
Datenbank-Lodash-Instanz. Verwenden Sie es, um Ihre eigenen Utility-Funktionen oder Mixins von Drittanbietern hinzuzufügen, wie z Unterstrich-Beitrag oder lodash-id .
// For performance, use .value() instead of .write() if you're only reading from db db.get('posts') .find({ id: 1 }) .value()
db.getState()
Gibt den Datenbankstatus zurück.
write()
db.setState (neuer Zustand)
Ersetzt den Datenbankstatus.
value()
db.write()
Besteht Datenbank mit |_+_| (je nach Adapter kann ein Versprechen zurückgegeben werden).
db.set('user.name', 'typicode') .write()
db.read ()
Liest die Quelle mit |_+_| Option (je nach Adapter kann eine Zusage zurückgegeben werden).
db.[...].write()
Adapter-API
Bitte beachten Sie, dass dies nur für Adapter gilt, die mit Lowdb gebündelt sind. Adapter von Drittanbietern können unterschiedliche Optionen haben.
Der Einfachheit halber, |_+_|, |_+_| und |_+_| akzeptieren Sie die folgenden Optionen:
- Standardwert Wenn die Datei nicht existiert, wird dieser Wert verwendet, um den Anfangszustand festzulegen (Standard: |_+_|)
- serialisieren/deserialisieren Funktionen, die vor dem Schreiben und nach dem Lesen verwendet werden (Standard: |_+_| und |_+_|)
db.set('user.name', 'typicode') .value() db.write()
Handbuch
So fragen Sie ab
Mit lowdb erhalten Sie Zugriff auf das gesamte lodash-API , daher gibt es viele Möglichkeiten, Daten abzufragen und zu bearbeiten. Hier sind ein paar Beispiele, um Ihnen den Einstieg zu erleichtern.
Bitte beachten Sie, dass Daten per Referenz zurückgegeben werden, dh Änderungen an zurückgegebenen Objekten können die Datenbank verändern. Um ein solches Verhalten zu vermeiden, müssen Sie |_+_| verwenden.
Außerdem ist die Ausführung von Methoden träge, d. h. die Ausführung wird verzögert, bis |_+_| oder |_+_| wird genannt.
Unity-Paket-Manager-Fehler
Aus einer vorhandenen JSON-Datei lesen
Wenn Sie von einem Dateiadapter lesen, ist der Pfad relativ zum Ausführungspfad (CWD) und nicht zu Ihrem Code.
db._.mixin({ second: function(array) { return array[1] } }) db.get('posts') .second() .value()
Dann liest du es so:
db.getState() // { posts: [ ... ] }
Beispiele
Überprüfen Sie, ob Beiträge vorhanden sind.
const newState = {} db.setState(newState)
Stellen Sie Beiträge ein.
adapter.write
Sortieren Sie die Top-5-Beiträge.
// With lowdb/adapters/FileSync db.write() console.log('State has been saved') // With lowdb/adapters/FileAsync db.write() .then(() => console.log('State has been saved'))
Erhalten Sie Beitragstitel.
storage.read
Rufen Sie die Anzahl der Beiträge ab.
// With lowdb/FileSync db.read() console.log('State has been updated') // With lowdb/FileAsync db.read() .then(() => console.log('State has been updated'))
Rufen Sie den Titel des ersten Beitrags mithilfe eines Pfads ab.
FileSync
Aktualisieren Sie einen Beitrag.
FileAsync
Beiträge entfernen.
LocalBrowser
Entfernen Sie eine Eigenschaft.
{}
Erstellen Sie einen tiefen Klon von Beiträgen.
JSON.stringify
So verwenden Sie id-basierte Ressourcen
Die Möglichkeit, Daten mithilfe einer ID abzurufen, kann insbesondere bei Servern sehr nützlich sein. Um id-basierte Ressourcenunterstützung zu lowdb hinzuzufügen, haben Sie zwei Möglichkeiten.
kurz ist minimalistischer und gibt eine eindeutige ID zurück, die Sie beim Erstellen von Ressourcen verwenden können.
JSON.parse
lodash-id bietet eine Reihe von Helfern zum Erstellen und Bearbeiten von ID-basierten Ressourcen.
const adapter = new FileSync('array.yaml', { defaultValue: [], serialize: (array) => toYamlString(array), deserialize: (string) => fromYamlString(string) })
So erstellen Sie benutzerdefinierte Adapter
|_+_| akzeptiert benutzerdefinierten Adapter, sodass Sie Ihre Daten virtuell in jedem beliebigen Format speichern können.
.cloneDeep()
Beispiele finden Sie unter src/adapter.
So verschlüsseln Sie Daten
|_+_|, |_+_| und |_+_| benutzerdefinierte akzeptieren |_+_| und |_+_| Funktionen. Sie können sie verwenden, um Verschlüsselungslogik hinzuzufügen.
.value()
Änderungsprotokoll
Siehe Änderungen für jede Version im Versionshinweise .
Grenzen
Lowdb ist eine bequeme Methode zum Speichern von Daten, ohne einen Datenbankserver einzurichten. Es ist schnell genug und sicher, um als eingebettete Datenbank verwendet zu werden.
Wenn Sie jedoch mehr Wert auf hohe Leistung und Skalierbarkeit als auf Einfachheit legen, sollten Sie sich wahrscheinlich an traditionelle Datenbanken wie MongoDB halten.
Quellcode
https://github.com/typicode/lowdb
#json #javascript #Datenbank