Задать вопрос

Почему Node js не отдает статику пока не отработает запрос к БД?

Node js не отдает статику (и вообще не отвечает ни на какие запросы )пока не отработает запрос к БД .
На локальном компьютер под windows 7 все работает хорошо проблема наблюдается при переносе на windows server 2008 r2 .
Само приложение вертится на windows server 2008 r2
БД на sq server.
Использую express - как сервер и mssql для бд.

код
const express = require('express');
const mssql = require('mssql');
const serveStatic = require ('serveStatic');


app.use(serveStatic('./public'));

app.listen(3000);

const dbConfig =  {
    driver: "tedious",
    server: "server",
    database: "database",
    user: "Login",
    password: "..."
};

var connection = new mssql.connect(dbConfig);

app.get('/test',  function(req, res) {
    
    let sql = `select *   FROM [dbo].[table]  WITH(NOLOCK)`;

    connection.then(function(){

        var request=new mssql.Request();
        request.input('user',req.session.user);
        request.query(sql).then(

            function(rec){
                if(rec.recordset.length===0){
                    res.status(400).send('По запросу данных не найденно');
                }else {
                    res.send(rec);
                }

            }
        ).catch(function(err){
            console.dir(err);
            res.status(500).send('Ошибка запроса');
        });

    })

})

app.get('/test1',  function(req, res) {

    res.send('Ни чего не верну пока отрабатывается запрос test')
    
})
  • Вопрос задан
  • 459 просмотров
Подписаться 5 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
alexfilus
@alexfilus
Senior backend developer
Потому что nodeJS однопоточный, а запрос к БД выполняется синхронно.
Попробуйте переписать так, чтобы запрос был асинхронным.
https://www.npmjs.com/package/mssql#quick-example
Ответ написан
bro-dev
@bro-dev
Ну у меня такое было потому что проц просто умирал на 101% загруженности, и ничего не отвечало тоже, с базой это не связано там были просто тяжелые вычленения. Попробуй просто по интервалу выводи в консоль время и смотри как стабильно она это делает.
а лучше сначало запомни time=new Date.now()
в в консоль выводи time-new Date.now() и сохраняй еще раз. или в пм2 запусти и посмотри сколько там среднее время эвент лупа
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы