Node.js 如何从节点中的回调返回连接
我想创建一个db.js文件,所有其他文件都可以使用。这个想法是,在db.js文件中创建的连接可以重用,而无需每次调用时重新连接到数据库 db.js 我想做像上面那样的事情(不起作用),但这个想法在我的app.js中我会设定Node.js 如何从节点中的回调返回连接,node.js,database,async-await,Node.js,Database,Async Await,我想创建一个db.js文件,所有其他文件都可以使用。这个想法是,在db.js文件中创建的连接可以重用,而无需每次调用时重新连接到数据库 db.js 我想做像上面那样的事情(不起作用),但这个想法在我的app.js中我会设定 var db = require("./db") 它将返回连接。您可以包装.connect()调用一个承诺,并从模块返回此承诺,例如 const nodeq = require("node-q"); module.exports =
var db = require("./db")
它将返回连接。您可以包装
.connect()
调用一个承诺,并从模块返回此承诺,例如
const nodeq = require("node-q");
module.exports = new Promise( (resolve,reject) => {
nodeq.connect({host: "192.168.1.1", port: 5000}, function(err, con) {
if (err) return reject(err);
console.log("KDB connected");
resolve(con);
});
});
然后,在您的来电者中,您可以等待此承诺(仍然需要错误处理,但应该给您一个开始):
或者你会:
const dbConnPromise = require("./db");
//... then somewhere in your code where you need the db-connection, you can do:
async function doDbStuff() {
const db = dbConnPromise();
const result = await db.query(...);
}
每次我这样做,它会不会创建一个新的连接?不会,模块是缓存的。因此,
connect
-调用将仅在第一个需要时执行。请不要忘记接受它是否适合您。
const dbConnection = await require("./db");
const dbConnPromise = require("./db");
//... then somewhere in your code where you need the db-connection, you can do:
async function doDbStuff() {
const db = dbConnPromise();
const result = await db.query(...);
}