在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)  HTML/ Sequelize如何同步判斷數(shù)據(jù)庫(kù)連接及同步成功

Sequelize如何同步判斷數(shù)據(jù)庫(kù)連接及同步成功

Hi,各位大佬。
是這樣的,目前我希望實(shí)現(xiàn)通過(guò)sequelize的authenticate方法判斷數(shù)據(jù)庫(kù)連接是否正常,然后執(zhí)行各個(gè)表的sync方法進(jìn)行同步,均無(wú)問(wèn)題則執(zhí)行下面的邏輯代碼。
但是在當(dāng)前模式下,需要通過(guò)如下邏輯進(jìn)行處理

sequelize.authenticate.then(function(){
    User.sync().then(function(){
        Order.sync().then(function(){
            // 大段邏輯代碼
        });
    });
});

這樣會(huì)顯得很累贅。
我嘗試通過(guò)co模塊進(jìn)行如下處理

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

但是我發(fā)現(xiàn),下面的邏輯代碼會(huì)先行,達(dá)不到我所要的效果。
請(qǐng)問(wèn)該如何處理目前這種情況呢?
謝謝!

回答
編輯回答
空白格

1、數(shù)據(jù)庫(kù)連接通過(guò)配置連接池來(lái)管理,不用特意去判斷連接是否正常,因?yàn)槠鋾?huì)自動(dòng)進(jìn)行重連操作
2、sync同步數(shù)據(jù)庫(kù)表結(jié)構(gòu)只需要在開(kāi)始階段的執(zhí)行一次即可(只要表結(jié)構(gòu)與你的model對(duì)應(yīng),其實(shí)是不需要sync操作的),這種場(chǎng)景建議使用promise.all(放到app.js里執(zhí)行):

(async () => {
    try {
        await Promise.all([
            User.sync({force: false}),
            Order.sync({force: false}), 
            // ...      
        ]);
    } catch (error) {
        console.log(error);
    }
})();
2017年5月14日 14:07