Nodejs 仅连接一次数据库

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 数据库将被初始化那么多次?

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

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

OhJ*_*eez 3

官方文档: 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)