什么SQLite使用nodejs
我正在开发应用程序使用node.js
在这我愿意使用SQLite
作为embedded式数据库。 我在网上searchSQLite
NPM模块。 我发现了各种模块:
- https://github.com/grumdrig/node-sqlite
- https://github.com/orlandov/node-sqlite
- 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
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');
。
对于我的架构同步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了。