Какой SQLite использовать с nodejs

39

Я разрабатываю приложение, используя node.js. В этом я готов использовать SQLite как встроенную базу данных. Я искал онлайн для модулей SQLite npm. Я нашел различные модули:

Из документации и других источников я понял, что (1) работает синхронно, а (2) и (3) работает асинхронно. Итак, я отказался от плана использования (1).

Теперь, я хочу знать, в чем разница между (2) и (3) и какой из них предпочтительнее? Я много гугл, но не мог найти много, чтобы помочь.

Теги:
sqlite3

6 ответов

33
Лучший ответ

Используйте https://github.com/mapbox/node-sqlite3. Он асинхронный (почти обязательный), он наиболее активно поддерживается, и он имеет большинство звезд на GitHub.

  • 3
    Новый адрес github.com/mapbox/node-sqlite3
  • 0
    Не обновлялся около года. Так что не самый активный.
Показать ещё 1 комментарий
16

В качестве альтернативы вы можете использовать встроенную базу данных javascript. Таким образом вам просто нужно объявить базу данных как зависимость в ваших package.json и require() в вашем приложении.

Отметьте NeDB (который я написал) или nStore, например.

  • 0
    Проверьте также FinalDB ( npmjs.org/package/final-db ) в качестве еще одного встроенного решения БД.
  • 0
    Это, вероятно, лучшие решения для баз данных на основе документов.
5

Для моей архитектуры синхронный better-sqlite3 оказался лучше:

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

  • Полная поддержка транзакций
  • Подходит для производительности, эффективности и безопасности
  • Простой в использовании синхронный API (быстрее, чем асинхронный API)
  • Поддержка пользовательских SQL-функций
  • Поддержка 64-битного целого (невидимая, пока вам это не понадобится)
4

Клиент SQLite для Node.js Apps/w встроенный API миграции на основе SQL

[IMG_OUR_ID=1148.svg?style=flat-square] [IMG_OUR_ID=1149.svg?style=flat-square] [IMG_OUR_ID=1150.svg?style=flat-square]

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));

ПРИМЕЧАНИЕ. Пример выше работает только с Node.js v6 и более новым (при условии, что import и async/await особенности языка, используемые в код транслируется с помощью Babel). Для более ранних версий Node.js используйте var db = require('sqlite/legacy');.

  • 0
    Эта реализация сделала мое приложение более интересным. Спасибо! :)
  • 0
    Вот ссылка на вашу статью об этом medium.com/@tarkus/…
0
0

Модуль Grumdrig, похоже, наиболее употребителен для Qaru и других сайтов.

Кроме того, документация довольно хорошая: http://github.grumdrig.com/node-sqlite/

У меня довольно мало опыта работы с Node SQLite, но сообщество, похоже, выбрало.

  • 17
    Не используйте этот (мой). Это старое, заброшенное и только синхронное.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню