为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

largeQ 2019-03-06 17:31:09
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();但是我发现,下面的逻辑代码会先行,达不到我所要的效果。请问该如何处理目前这种情况呢?谢谢!
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

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);

    }

})();


查看完整回答
反对 回复 2019-03-08
  • 1 回答
  • 0 关注
  • 1598 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号