43

を使用してアプリケーションを開発していますnode.js。その点で、私はSQLite組み込みデータベースとして使用したいと思っています。SQLitenpmモジュールをオンラインで検索しました。さまざまなモジュールを見つけました:

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

ドキュメントやその他の情報源から、(1)は同期的に動作し、(2)と(3)は非同期的に動作することがわかりました。そこで、(1)を使う計画をやめました。

さて、(2)と(3)の違いは何ですか?どちらを優先すべきですか?私はたくさんグーグルで検索しましたが、役立つものを見つけることができませんでした。

4

6 に答える 6

34

https://github.com/mapbox/node-sqlite3を使用します。非同期(ほぼ必須)であり、最も積極的に保守されており、GitHubで最も多くのスターを獲得しています。

于 2013-04-09T23:46:26.937 に答える
17

または、javascript組み込みデータベースを使用することもできます。このように、データベースをアプリケーションの依存関係として宣言する必要がありpackage.jsonますrequire()

たとえば、 NeDB(私が書いたもの)やnStoreをチェックしてください。

于 2013-05-24T16:27:18.987 に答える
13

私のアーキテクチャでは、同期のbetter-sqlite3方が優れているように見えました。

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

  • 完全なトランザクションサポート
  • パフォーマンス、効率、安全性を重視
  • 使いやすい同期API(非同期APIよりも高速)
  • カスタムSQL関数のサポート
  • 64ビット整数のサポート(必要になるまで表示されません)
于 2017-10-09T04:33:01.463 に答える
5

Node.jsアプリ用のSQLiteクライアント/w組み込みのSQLベースの移行API

NPMバージョン NPMダウンロード オンラインチャット

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以降でのみ機能します(コードで使用されている言語機能がBabelimportで変換されていると仮定します)。以前のバージョンのNode.jsには、を使用します。async/awaitvar db = require('sqlite/legacy');

于 2016-05-22T07:48:31.310 に答える
0

Grumdrigのモジュールは、StackOverflowや他のサイトで最も参照されているモジュールのようです。

また、ドキュメントはかなり良いです:http: //github.grumdrig.com/node-sqlite/

私はNodeSQLiteの経験がほとんどありませんが、コミュニティが選択したようです。

于 2013-04-09T23:39:14.153 に答える
0

https://github.com/mapbox/node-sqlite3からhttps://github.com/JoshuaWise/better-sqlite3に切り替えました。理由の1つはより良いです-sqlitesの作者は私に徹底的な答えを与えました、https://github.com/JoshuaWise/better-sqlite3/issues/181、なぜhttps://github.com/JoshuaWise/better-sqlite3#why- should-i-use-this-instead-of-node-sqlite3

于 2018-12-02T05:32:11.240 に答える