gpt4 book ai didi

database - nodejs 只连接到数据库一次

转载 作者:搜寻专家 更新时间:2023-10-31 23:21:46 26 4
gpt4 key购买 nike

我有一个 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,Sqlite3 模块可以在内部进行缓存,即它不会在 new sqlite3.cached.Database(file)< 上创建新连接 只要 file 持有的字符串相同,但重复使用现有的字符串。请在此处查看源代码: https://github.com/mapbox/node-sqlite3/blob/master/lib/sqlite3.js

但是,您不应该依赖于此。进行某种依赖注入(inject),一路上会省去很多麻烦。以最简单的形式,它将编写您的模块,它们导出接受数据库对象作为参数的函数:

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

关于database - nodejs 只连接到数据库一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com