database – nodejs只连接一次db

我有一个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();

如果我在不同的文件中要求()上面这个文件4次,这是否意味着sqlite数据库会多次初始化?

我想第一次将它初始化..

这效率低吗?有更有效的方法吗?

最佳答案 官方文件:
https://github.com/mapbox/node-sqlite3/wiki/Caching

如果使用require(‘sqlite3’)缓存,Sqlite3模块可以在内部进行缓存,即只要文件所保持的字符串相同,它就不会在新的sqlite3.cached.Database(文件)上创建新的连接,但重用现有的.在这里查看源代码:
https://github.com/mapbox/node-sqlite3/blob/master/lib/sqlite3.js

但是,你不应该依赖它.做一些依赖注入,它将节省许多令人头疼的问题.最简单的形式是编写模块,导出函数接受数据库对象作为参数:

//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);
点赞