我有一个连接到 Redis、Mongo 和 Elasticsearch 的应用程序,但如何确保在提供应用程序之前所有连接都已连接?我注意到 Elasticsearch 通常需要更长的时间,当我使用 Supertest 测试我的应用程序时,数据库已连接,但 console.info('Successively connect to db');
在测试之前不会登录到控制台开始运行。
server.ts
const client = redis.createClient({ host: process.env.REDIS })
client.on('connect', function () {
console.log('Redis client connected');
});
mongoose
.connect(dbURL)
.then(() => {
return console.info(`Successfully connected to ${db}`);
})
.catch(error => {
console.error('Error connecting to database: ', error);
return process.exit(1);
});
};
const app = express();
export default app;
main.ts
import server from './server'
server.listen(8000)
最佳答案
可以为每个连接导出一个连接Promise
然后在主应用程序中执行此操作
Promise.all([
connectRedisPromise(),
connectMongoPromise(),
connectESPromise(),
]).then(() => {
// start the app
})
关于node.js - 所有连接在应用程序提供服务之前连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59023866/