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').cached模块可以在内部require('sqlite3').cached ,即只要file保存的string是相同的,但是重用已存在的string,就不会在new sqlite3.cached.Database(file) 。 请在这里查看源代码: https : //github.com/mapbox/node-sqlite3/blob/master/lib/sqlite3.js

但是,你不应该依赖于此。 做一些dependency injection,这将节省许多头痛的方式。 最简单的forms是它将编写你的模块,他们将接受数据库对象的函数作为参数导出:

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