【问题标题】:how to catch Sequelize connection error如何捕获 Sequelize 连接错误
【发布时间】:2018-03-24 08:03:24
【问题描述】:

如果出现续集连接错误,如何捕获?

我试过了

var connection = new Sequelize("db://uri");
connection.on("error", function() { /* perhaps reconnect here */ });

但显然这不受支持。

我想这样做是因为我认为 sequelize 可能会偶尔抛出未处理的 ETIMEOUT 并使我的节点进程崩溃。

目前我正在使用 sequelize 连接一个 mysql 实例。我只需要 2-3 个小时,在此期间我会做很多读取查询。在此期间,mysql 服务器不会连接到任何其他设备。

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    在使用外部迁移或数据库完整性至关重要的情况下使用 sync() 是相当危险的(什么时候不是!)

    更多up-to-date的做法是使用authenticate()

    sequelize
      .authenticate()
      .then(() => {
        console.log('Connection has been established successfully.');
      })
      .catch(err => {
        console.error('Unable to connect to the database:', err);
      });
    

    【讨论】:

      【解决方案2】:

      为此使用 sequelize 同步

      var Sequelize = require('sequelize');
      
      sequelize = new Sequelize(config.database, config.username, config.password, {
          'host' : config.host,
          'dialect' : config.dialect,
          'port' : config.port,
          'logging' : false
        })
      
      sequelize.sync().then(function(){
        console.log('DB connection sucessful.');
      }, function(err){
        // catch error here
        console.log(err);
      
      });
      

      【讨论】:

      • 很酷,谢谢,我会试试的。我之前做过 sequelize.authenticate().then(resolve, reject) 并且拒绝从未被调用过。
      猜你喜欢
      • 2016-01-06
      • 2015-12-02
      • 2016-04-12
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多