Node.js 快速等待数据库连接
我正在关注一个相关的职位 我正在努力等待从express应用程序导入模块 我知道要使用wait,它必须包装在一个异步函数中。但是,我不能将整个节点程序包装在异步函数中,因为它将在不执行任何有用操作的情况下退出 如何正确等待数据库连接 node/express:Node.js 快速等待数据库连接,node.js,express,async-await,Node.js,Express,Async Await,我正在关注一个相关的职位 我正在努力等待从express应用程序导入模块 我知道要使用wait,它必须包装在一个异步函数中。但是,我不能将整个节点程序包装在异步函数中,因为它将在不执行任何有用操作的情况下退出 如何正确等待数据库连接 node/express: require('dotenv').config(); var express = require('express'); var loginRouter = require('./routes/login/login'); var ap
require('dotenv').config();
var express = require('express');
var loginRouter = require('./routes/login/login');
var app = express();
async() => {
const { client } = await require('./db/db');
app.use('/login', loginRouter);
app.set('port', process.env.PORT || 3000);
app.listen(app.get('port'));
console.log('Server listening on port ' + app.get('port'));
}
const { Client } = require('pg');
module.exports = (async() => {
const client = new Client();
await client.connect();
return { client };
})();
db模块:
require('dotenv').config();
var express = require('express');
var loginRouter = require('./routes/login/login');
var app = express();
async() => {
const { client } = await require('./db/db');
app.use('/login', loginRouter);
app.set('port', process.env.PORT || 3000);
app.listen(app.get('port'));
console.log('Server listening on port ' + app.get('port'));
}
const { Client } = require('pg');
module.exports = (async() => {
const client = new Client();
await client.connect();
return { client };
})();
一个选项是导出解析到连接的
客户端的承诺。然后,在导入时,调用。然后在导入的Promise
上调用,以访问连接的客户端:
const { Client } = require('pg');
const client = new Client();
module.exports = {
clientProm: client.connect().then(() => client)
};
以及:
我在不同的模块中也有我的路线。当我将这个模块导入到那些路由模块中时,如何在每次不创建新连接的情况下保持数据库连接?我是否能够用.then函数包装我的所有路由端点,然后在每个模块中使用?重读后,我的第二个问题得到了回答。我没有看到我们将客户端作为参数传递。这不应该是一个问题-从DB模块导出的连接客户端Promise
将在导入的任何地方引用相同的对象。我非常喜欢此解决方案。非常感谢。