#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 напрямую… но пока я не мог этого сделать