我正在关注相关的帖子here
我正努力等待从我的快速应用程序中导入模块。
我知道要使用await,必须将其包装在异步函数中。但是,我无法将整个节点程序包装在异步函数中,因为它会退出而不会做任何有用的事情。
如何正确等待数据库连接?
节点/表达式:
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 };
})();
答案 0 :(得分:1)
一个选择是导出解析为已连接 Promise
的{{1}}。然后,在导入时,在导入的client
上调用.then
以连接到连接的客户端:
Promise
并且:
const { Client } = require('pg');
const client = new Client();
module.exports = {
clientProm: client.connect().then(() => client)
};