Как определить время ожидания соединения при выполнении определенного SP в node.js express - PullRequest
0 голосов
/ 04 июня 2019

Я использую экспресс FW в node.js для подключения к серверу SQL и запуска SP. У меня есть SP, который выполняется больше времени, чем определено в экспресс-конфигурации по умолчанию. Я получаю сообщение об ошибке: «Тайм-аут: не удалось выполнить запрос в 15000 мс». Я хотел бы определить более длительное время ожидания для этого конкретного SP при его выполнении, где я могу это сделать? Вот мой код:

const express = require('express');
const router = express.Router();
const config = require('../../config');
const sql = require('mssql');
const db = require('../../modules/db')({
connectionString: config.connectionString
}); 


const GetData = (params) => {
return new Promise((resolve, reject) => { 
    db.connect().then((pool) => {
        return pool.request()
            .input(<input param for the SP>), 
            .execute(<SP name>);
    }).then((data) => {
        resolve(data);
    }).catch((error) => {
        reject(error);
    }).then(() => { })
 });
};

router.use("<path>", <middleware function>, (req, res, next) => {
return GetData(req.body).then((dataResult) => {
    res.status(200).json(dataResult);
}).catch((err) => {
    next({
        details: err
    })
 );
});

1 Ответ

0 голосов
/ 05 июня 2019

В моем случае я нашел способ его установки (requestTimeout) в конфигурации соединения с БД, и после того, как запрос выполняется \ не удалось - удалите это свойство из конфигурации - таким образом, значение по умолчанию снова станет активным , Смотрите мой код:

const GetData = (params) => {
return new Promise((resolve, reject) => { 
  db.options.connectionString.requestTimeout = <dedicated value>;
  db.connect().then((pool) => {
      return pool.request()
          .input(<input param for the SP>), 
          .execute(<SP name>);
   }).then((data) => {
      resolve(data);
      delete db.options.connectionString.requestTimeout;
   }).catch((error) => {
     reject(error);
  }).then(() => { delete db.options.connectionString.requestTimeout; })
 });
};
...