Sequelize如何同步判断数据库连接及同步成功

Hi,各位大佬。

是这样的,目前我希望实现通过sequelize的authenticate方法判断数据库连接是否正常,然后执行各个表的sync方法进行同步,均无问题则执行下面的逻辑代码。

但是在当前模式下,需要通过如下逻辑进行处理


sequelize.authenticate.then(function(){

    User.sync().then(function(){

        Order.sync().then(function(){

            // 大段逻辑代码

        });

    });

});

这样会显得很累赘。

我尝试通过co模块进行如下处理


co( function *() {

    try{

        // Check the database connection

        yield sequelize.authenticate();

        // Sync the tables

        yield User.sync({force: false});

        yield Order.sync({force: false});

        logger.info('Database init successfully.');


    }

    catch (e) {

        logger.error('Database init unsuccessfully!');

        process.exit(1);

    }

});

doSomething();

但是我发现,下面的逻辑代码会先行,达不到我所要的效果。

请问该如何处理目前这种情况呢?

谢谢!


largeQ
浏览 1599回答 1
1回答

HUH函数

1、数据库连接通过配置连接池来管理,不用特意去判断连接是否正常,因为其会自动进行重连操作2、sync同步数据库表结构只需要在开始阶段的执行一次即可(只要表结构与你的model对应,其实是不需要sync操作的),这种场景建议使用promise.all(放到app.js里执行):(async () => {    try {        await Promise.all([            User.sync({force: false}),            Order.sync({force: false}),             // ...              ]);    } catch (error) {        console.log(error);    }})();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript