Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 快速等待数据库连接_Node.js_Express_Async Await - Fatal编程技术网

Node.js 快速等待数据库连接

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

我正在关注一个相关的职位

我正在努力等待从express应用程序导入模块

我知道要使用wait,它必须包装在一个异步函数中。但是,我不能将整个节点程序包装在异步函数中,因为它将在不执行任何有用操作的情况下退出

如何正确等待数据库连接

node/express:

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
将在导入的任何地方引用相同的对象。我非常喜欢此解决方案。非常感谢。