nodejs只连接一次db

时间:2014-04-30 07:24:36

标签: database node.js sqlite

我有一个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数据库会多次初始化?

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

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

1 个答案:

答案 0 :(得分:2)

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

如果你使用require('sqlite3').cached,Sqlite3模块可以在内部进行缓存,即只要new sqlite3.cached.Database(file)保持的字符串相同,它就不会在file上创建新连接,但重用现有的。在这里查看源代码: 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);