NodeJS: как загрузить веб-сайт, не дожидаясь завершения длинного запроса?

#node.js #sql-server

#node.js #sql-сервер

Вопрос:

У меня есть файл node js, который запрашивает таблицу sql server, выполнение которой занимает около 17 секунд (огромный запрос длиной в таблицу). Я бы хотел, чтобы мой веб-сайт запускался, не дожидаясь завершения запроса. Чем полученный код будет отличаться от того, что у меня есть?

 app.get("/", async (req, res) => {
      await sql.connect(config);
    

      const superLongQuery = await sql.query`select something from somethingElse`;     
     
      res.render("index",{superQuery: superLongQuery})
   
});
  

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

1. загружайте данные асинхронно с помощью ajax

2. какие-либо решения с node js?

Ответ №1:

Я не знаю, какой модуль вы используете, но я предполагаю sql , что вам просто нужно подключиться, чтобы подключиться к нему один раз. Поместите sql.connect(config); внешнюю часть express. Когда вы добавляете его в app.get каждый новый запрос к этой конечной точке, он будет подключаться к sql, что просто тратит слишком много ресурсов и производительности.

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

1. запрос необходимо загружать каждый раз, потому что он меняется каждый день

2. могу я спросить, что это за модуль узла? Когда вы подключаетесь к базе данных sql, она должна обнаруживать изменения, даже если она подключена до внесения изменений.

3. конечно, mssql подключается к sql server 2012

4. Я слышал о том, что React использует хук useEffect, чтобы, возможно, выполнить то, что я ищу, но не уверен, как его использовать