Преобразовать Excel в SQL, а затем в JSON для оптимизации ответа данных, отправленного клиенту в NodeJS

#node.js #json #excel #api #heroku

#node.js #json #excel #API #heroku

Вопрос:

У меня есть приложение, в котором мы загружаем файл Excel с данными, используя этот метод:

 // Upload and replace excel file for a new version of the excel file
app.post('/data', function (req, res) {
  const upload = multer({ storage }).single('document');
  fs.unlink(path2, (err) => {
    if (err) {
      console.error(err)
      return
    }
    upload(req, res, function (err) {
      if (err) {
        return res.end("error lors de upload")
      }
      res.redirect('/')
    })
  })
});
 

Затем есть другой метод, который преобразует excel в JSON и отправляет данные клиенту:

 // Converts Excel to JSON and send to client
app.get('/json2', (req, res) => {
  node_xj({
    input: "uploads/data.xlsx",
    output: "output.json"
  }, function (err, result) {
    if (err) {
      console.error(err);
    } else {
      const interval = setInterval(() => {
        console.log('test')
      }, 3600 * 24 * 365)
      res.send(result);
      console.log("results send ok");
    }
  });
})
 

Однако этот процесс является медленным, поскольку при каждом запросе данных от клиента серверу приходится преобразовывать excel в JSON и отправлять данные, поэтому иногда клиент не получает данные.

Я хотел бы знать, можно ли оптимизировать это с помощью скрипта, поместив данные Excel в SQL, а затем маршрут json2 преобразует SQL в JSON и отправляет клиенту.

Мое приложение nodejs развернуто в Heroku прямо сейчас.

Вы знаете, как это сделать? Не могли бы вы дать несколько советов?

Заранее спасибо

Комментарии:

1. Почему добавление другого преобразования ускорит это? это будет медленнее. Если узким местом является node_xj деталь, вам необходимо ее оптимизировать. Сколько строк в Excel, является ли вывод JSON плоским и сколько времени в настоящее время требуется для запуска? Как «клиент не получает данные» — есть ли тайм-аут? Они закрывают свой браузер?

2. Клиент представляет собой приложение IONIC Angular для Android и IOS, и когда клиент запрашивает api для извлечения данных, маршрут преобразует файл Excel в json и отправляет JSON обратно. Я видел в postman, что этот запрос длится в среднем 5 секунд. И поскольку это происходит так медленно, иногда возникают ошибки, и программа не получает данные. Я подумал, что если до этого, когда я загружаю файл Excel через POST-запрос, я могу сохранить данные Excel в базе данных, тогда клиент может запросить базу данных для получения данных, и это будет быстрее, чем запрос и преобразование файла Excel.

3. Я также изучаю возможность запроса POST для загрузки файла Excel> Преобразовать в Excel и сохранить данные в файл JSON в проекте> запрос GET от клиента отправляет этот файл JSON напрямую… но пока я не мог этого сделать