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);
}
})();
添加回答
举报
0/150
提交
取消
