Как бороться с необработанным отказом SequelizeConnectionError: подключить ETIMEDOUT

0

Следующий код - это проект, который анализирует каталоги CSV файлов для ввода в базу данных MySQL. Это часто работает, однако меня преследует ошибка ETIMEDOUT. Я младший разработчик и не уверен, как справиться с этой ситуацией или почему это происходит. Может быть, потому, что я разобрал слишком много информации сразу. Любые рекомендации о том, как с этим справиться, будут очень признательны.

const app = require('express')();
var fs = require('fs');
var Papa = require('papaparse');
var Sequelize = require('sequelize');
var _ = require('underscore');
var mainDirectory = ['./Relay-Data'];

var sequelize = new Sequelize('relay_cloud','root','admin',{
  host: 'localhost',
  dialect: 'mysql',
  logging: false,
    pool: {
     max: 5,
     min: 0,
     idle: 50000,
     acquire: 50000,
     evict: 50000,
     handleDisconnects: true
 }
});

var Relay = sequelize.define('relay',{
  Timestamp:{
    type: Sequelize.DATE,
    field: 'Timestamp',
  },
  Identifier:{
    type: Sequelize.INTEGER,
    field: 'Identifier',
  },
  Building:{
    type: Sequelize.STRING,
    field: 'Building',
  },
  Device_Type:{
    type: Sequelize.STRING,
    field: 'Device_Type'
  },
  Unit:{
    type: Sequelize.STRING,
    field: 'Unit'
  },
  Energy:{
    type: Sequelize.DECIMAL,
    field: 'Energy'
  },
  Volume:{
    type: Sequelize.DECIMAL,
    field: 'Volume'
  },
  File_Name:{
    type: Sequelize.STRING,
    field: 'File_Name'
  }
},{
  timestamps: false,
  freezeTableName: true
});

Promise.all(mainDirectory.map(function(main) {
  return new Promise(function(resolve, reject) {
        fs.readdir(main, function(er,dirs){
            if (er) {
                return reject(er);
            }
            for(var i = 0; i < dirs.length; i++){
                dirs[i] = mainDirectory + "/" + dirs[i];
            }
            resolve(dirs);
        });
  }).then(function(dirs){
        return Promise.all(dirs.map(function(dir) {
          return new Promise(function(resolve, reject) {
            fs.readdir(dir, function(er, files) {
              if (er) {
                return reject(er);
              }
              resolve(files);
            });
          }).then(function(files) {
            return Promise.all(files.map(function(file) {
              return new Promise(function(resolve, reject) {
                fs.readFile(dir + '/' + file, 'utf-8', function(er, content) {
                  if (er) {
                    return reject(er);
                  }
                            var data_obj = Papa.parse(content,{
                                    quotes: false,
                                    delimiter: ";",
                                });
                                data_array = data_obj.data;
                                output_data_array = [];

                                for(var i = 10; i < data_array.length; i++){
                                    if(data_array[i][0] !== "" ){
                                        output_data_array.push({
                                                "Timestamp"     : data_array[i][0],
                                                "Identifier"    : data_array[i][1],
                                                "Building"      : file.split( "_" )[ 1 ],
                                                "Device_Type" : data_array[i][3],
                                                "Unit"          : data_array[i][5],
                                                "Energy"        : parseFloat(data_array[i][11].replace(',','.').replace(' ', '')) || 0 ,
                                                "Volume"    : parseFloat(data_array[i][13].replace(',','.').replace(' ', '')) || 0,
                                                "File_Name" : file
                                        });
                                    }
                                }
                        Relay.bulkCreate(output_data_array);
                    });
                resolve();
              });
            }));
          });
        }));
    });
})).catch(function(er) {
  console.log(er);
});



app.listen(process.env.PORT || 3000, process.env.IP, function(){
    console.log("Server is listening");
})
Теги:
sequelize.js
papaparse

1 ответ

1

Я смог предотвратить ошибку ETIMEDOUT, выполнив следующие действия:

setTimeout(function() {
            Relay.bulkCreate(output_data_array);
          }, 2);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню