Raf*_*ost 5 database sqlite node.js
我有一个 db.js 文件,顶部有这一行用于连接到数据库。我调用此文件来从其他 js 文件内部运行查询:
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('./mydatabase');
db.serialize(function() {
db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
console.log(row.id + ": " + row.info);
});
db.close();
Run Code Online (Sandbox Code Playgroud)
如果我在不同的文件中 require() 上面的文件 4 次,这是否意味着 sqlite 数据库将被初始化那么多次?
我只想第一次初始化它..
这效率低吗?有更有效的方法吗?
官方文档: https: //github.com/mapbox/node-sqlite3/wiki/Caching
如果使用 ,Sqlite3 模块可以在内部进行缓存,即只要所保存的字符串相同,require('sqlite3').cached它就不会创建新连接,而是重用现有连接。请自行查看源代码:
https: //github.com/mapbox/node-sqlite3/blob/master/lib/sqlite3.jsnew sqlite3.cached.Database(file)file
但是,您不应该依赖于此。进行某种依赖注入,这会避免很多麻烦。以最简单的形式,它将编写您的模块,它们导出接受数据库对象作为参数的函数:
//module1.js
module.exports = function(db){
db.serialize(...)
//dostuff
}
//start.js
var sqlite3 = require('sqlite3').verbose();
var module1 = require('./module1.js');
var db = new sqlite3.Database('./mydatabase');
module1(db);
Run Code Online (Sandbox Code Playgroud)