什么SQLite使用nodejs

我正在开发应用程序使用node.js 在这我愿意使用SQLite作为embedded式数据库。 我在网上searchSQLite NPM模块。 我发现了各种模块:

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

从文档和其他来源,我了解到(1)同步运行,(2)和(3)asynchronous运行。 所以,我放弃了使用(1)的计划。

现在我想知道(2)和(3)之间有什么区别,哪一个应该是首选? 我GOOGLE了很多,但找不到很多的帮助。

使用https://github.com/mapbox/node-sqlite3 。 它是asynchronous的(几乎是必须的),它是最积极的维护,它拥有GitHub上最多的星星。

另外,你可以使用JavaScriptembedded式数据库。 这样你只需要在你的package.json声明数据库为一个依赖项,并在你的应用程序中require()它。

看看NeDB (我写的)或者nStore 。

适用于Node.js应用程序的SQLite客户端 /内置基于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和更新版本(假设代码中使用的importasync/await语言特性是通过Babel来传递的)。 对于早期版本的Node.js,使用var db = require('sqlite/legacy');

对于我的架构同步better-sqlite3似乎是更好的:

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

  • 完整的交易支持
  • 适应性能,效率和安全性
  • 易于使用的同步API(比asynchronousAPI更快)
  • 自定义SQL函数支持
  • 64位整数支持(隐藏,直到你需要它)

Grumdrig的模块似乎是Stack Overflow中引用最多的模块,也是其他站点上的模块。

另外,这个文档还是不错的: http : //github.grumdrig.com/node-sqlite/

我对Node的SQLite经验不多,但社区似乎已经select了。