webentwicklung-frage-antwort-db.com.de

Welche SQLite sollte mit nodejs verwendet werden?

Ich entwickle Anwendungen mit node.js. Ich bin bereit, SQLite als eingebettete Datenbank zu verwenden. Ich habe online nach SQLite npm-Modulen gesucht. Ich habe verschiedene Module gefunden:

  1. https://github.com/grumdrig/node-sqlite
  2. https://github.com/orlandov/node-sqlite
  3. https://github.com/developmentseed/node-sqlite3

Aus der Dokumentation und anderen Quellen habe ich verstanden, dass (1) synchron arbeitet, während (2) und (3) asynchron arbeiten. Also habe ich den Plan aufgegeben (1). 

Nun möchte ich wissen, was ist der Unterschied zwischen (2) und (3) und welcher sollte bevorzugt werden? Ich googelte viel, konnte aber nicht viel helfen.

39
Shubhansh

Verwenden Sie https://github.com/mapbox/node-sqlite3 . Es ist asynchron (fast ein Muss), es wird am aktivsten gewartet und es hat die meisten Stars auf GitHub.

32
Trevor Dixon

Alternativ können Sie eine in Javascript eingebettete Datenbank verwenden. Auf diese Weise müssen Sie die Datenbank lediglich als Abhängigkeit in Ihrem package.json und require() in Ihrer Anwendung deklarieren.

Check out NeDB (was ich geschrieben habe) oder nStore zum Beispiel.

16
Louis Chatriot

Für meine Architektur schien synchron better-sqlite3 besser zu sein:

https://www.npmjs.com/package/better-sqlite3

  • Volle Transaktionsunterstützung
  • Auf Leistung, Effizienz und Sicherheit ausgerichtet
  • Einfach zu verwendende synchrone API (schneller als eine asynchrone API)
  • Benutzerdefinierte SQL-Funktionsunterstützung
  • 64-Bit-Integer-Unterstützung (unsichtbar, bis Sie es brauchen)
6

SQLite-Client für Node.js-Apps / w Integrierte SQL-basierte Migrations-API

 NPM version  NPM downloads  Online Chat

import express from 'express';
import db from 'sqlite';                                       // <=
import Promise from 'bluebird';

const app = express();
const port = process.env.PORT || 3000;

app.get('/posts', async (req, res, next) => {
  try {
    const posts = await db.all('SELECT * FROM Post LIMIT 10'); // <=
    res.send(posts);
  } catch (err) {
    next(err);
  }
});

Promise.resolve()
  // First, try to open the database
  .then(() => db.open('./database.sqlite', { Promise })        // <=
  // Update db schema to the latest version using SQL-based migrations
  .then(() => db.migrate({ force: 'last' })                    // <=
  // Display error message if something went wrong
  .catch((err) => console.error(err.stack))
  // Finally, launch the Node.js app
  .finally(() => app.listen(port));

NOTE: Das obige Beispiel funktioniert nur mit Node.js v6 und neuer (vorausgesetzt, dass import und async/await Sprachmerkmale, die im Code verwendet werden, mit Babel übertragen werden ). Für frühere Versionen von Node.js verwenden Sie var db = require('sqlite/legacy');.

4

Das Modul von Grumdrig scheint dasjenige zu sein, auf das am meisten auf Stack Overflow und auch auf anderen Websites verwiesen wird. 

Die Dokumentation ist auch ziemlich gut: http://github.grumdrig.com/node-sqlite/

Ich habe eher wenig Erfahrung mit Node SQLite, aber die Community scheint gewählt zu haben.

0
zcserei
0
Qiulang