【问题标题】:Synchronous sequelize.sync() or different way?同步 sequelize.sync() 还是其他方式?
【发布时间】:2018-07-29 00:51:55
【问题描述】:

我刚开始在基于 Express 生成器的项目中使用 Sequelize。我正在为我的 MySQL 数据库使用 Sequelize,我需要在开始侦听来自网站的 http 请求之前启动数据库。首先我做的是:

app.js

sequelize.sync().then(() => {
    app.use('view engine', 'ejs');
    app.use('/auth', auth);
    //etc etc etc...
}).catch(err=>{
    console.log(err);
});

但是有些话告诉我这不是正确的风格。有没有更好的办法?或者只是在运行快速路由等之前使用同步调用,如下所示:

syncFunctionWhatCallsSequelizeSync();

app.use('view engine', 'ejs');
app.use('/auth', auth);
//etc etc etc...

【问题讨论】:

  • 你的第一个例子很好。如果你想让你的代码看起来同步,你可以使用async/await
  • 但是第一个代码很乱,不遵循“一个模块做一件事的标准”

标签: node.js express asynchronous sequelize.js synchronous


【解决方案1】:

您可以在 sync() 之前配置路由、中间件等,因为您的服务器仅在 sync() 之后进行侦听。

// Configure routes
// Configure middleware
// Configure etc
models.sequelize.sync()
    .then(() => {
        // Start listening 
    })
    .catch(err => {

    });

【讨论】:

  • models 定义在哪里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2022-03-07
  • 1970-01-01
  • 2018-01-27
  • 2011-10-17
相关资源
最近更新 更多