node.js - 所有连接在应用程序提供服务之前连接

标签 node.js mongodb design-patterns redis

我有一个连接到 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/

相关文章:

python - MongoDB:无法启动副本集; 'has data already, cannot initiate set'

java - 使用模式在 Java 中重构重复代码

node.js - 在 TypeScript 中导入 Node 模块

node.js - Electron JS/Node JS 桌面应用程序作为本地网络网络服务器

node.js - 如何使用iron-node来调试jest单元测试?

c# - 尝试比较 mongodb 字符串数组中的标签,文本框输入 c#

node.js - npm peerDependency - 无法安装包

node.js - 如何在 Mongoose 中为子文档设置 setter?

Java - 避免将对象引用传递到多个位置,同时确保其线程安全

c# - 向多个目标类中的方法调用注入(inject)外部参数