快速等待数据库连接

时间:2018-10-10 02:57:01

标签: node.js express async-await

我正在关注相关的帖子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 };
})();

1 个答案:

答案 0 :(得分:1)

一个选择是导出解析为已连接 Promise的{​​{1}}。然后,在导入时,在导入的client上调用.then以连接到连接的客户端:

Promise

并且:

const { Client } = require('pg');

const client = new Client();
module.exports = {
  clientProm: client.connect().then(() => client)
};