Json Javascript-Datenbank für Node.js, Electron und Browser

Blog

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