web-dev-qa-db-fra.com

Quel SQLite utiliser avec nodejs

Je développe une application en utilisant node.js. En cela, je suis prêt à utiliser SQLite comme base de données intégrée. J'ai cherché en ligne SQLite npm modules. J'ai trouvé divers modules:

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

D'après la documentation et d'autres sources, j'ai compris que (1) fonctionne de manière synchrone, alors que (2) et (3) fonctionne de manière asynchrone. J'ai donc abandonné le plan d'utilisation (1). 

Maintenant, je veux savoir quelle est la différence entre (2) et (3) et laquelle devrait être préférée? J'ai beaucoup cherché sur Google mais je ne trouvais pas grand chose à aider.

39
Shubhansh

Utilisez https://github.com/mapbox/node-sqlite3 . C'est asynchrone (presque indispensable), c'est le plus activement maintenu, et il a le plus d'étoiles sur GitHub.

32
Trevor Dixon

Alternativement, vous pouvez utiliser une base de données intégrée javascript. De cette façon, il vous suffit de déclarer la base de données en tant que dépendance dans vos package.json et require() dans votre application.

Découvrez NeDB (que j'ai écrit) ou nStore par exemple.

16
Louis Chatriot

Pour mon architecture, le better-sqlite3 semblait plus performant:

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

  • Prise en charge complète des transactions
  • Conçu pour la performance, l'efficacité et la sécurité
  • API synchrone facile à utiliser (plus rapide qu'une API asynchrone)
  • Prise en charge de fonctions SQL personnalisées
  • Prise en charge de l'entier 64 bits (invisible jusqu'à ce que vous en ayez besoin)
6

Client SQLite pour les applications Node.js / w API de migration intégrée à SQL

 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: l'exemple ci-dessus ne fonctionne qu'avec Node.js v6 et plus récent (en supposant que import et async/await les fonctionnalités de langage utilisées dans le code sont transmises à Babel ). Pour les versions antérieures de Node.js, utilisez var db = require('sqlite/legacy');.

4

Le module de Grumdrig semble être celui qui a été le plus référencé sur Stack Overflow, ainsi que sur d'autres sites. 

En outre, la documentation est plutôt bonne: http://github.grumdrig.com/node-sqlite/

J'ai assez peu d'expérience avec Node SQLite, mais la communauté semble l'avoir choisie.

0
zcserei
0
Qiulang