0

Привет, Я пытаюсь использовать два выбора в одном JS-файле в узле js и sql-сервере. Я не могу понять синтаксис этого. Мне нужен выбор, чтобы получить всех лиц из таблицы, а другой - подсчитать общее количество людей в этой таблице. Можно будет поместить эти два выбора в один JS-файл. Если да, то кто-нибудь может помочь мне с синтаксисом?Узел JS Multiple Select

Вот код, я попробовал, и я получаю ошибку «Cant Set заголовки после того, как они отправляются»

вар SQL = требуется («MSSQL»); вар DBCONFIG = {

server: "XXXXX", 
database: "XXXXX", 
user: "XXXXX", 
password: "XXXX", 
port: 1433 

}; exports.list = функция (REQ, разреш) {

sql.connect(dbConfig, function (err) { 

    if (err) console.log(err); 

    var request = new sql.Request(); 

    request.query('select * from PERSON', function (err, recordset) { 

     if (err) 
      console.log(err) 
     else 
      console.log(recordset) 
      res.render('personinfo_itwx', { data: recordset }); 

    }); 

     request.query('select count(*) from PERSON', function (err, recordset) { 

     if (err) 
      console.log(err) 
     else 
      console.log(recordset1) 
      res.render('personinfo_itwx', { data: recordset1 }); 

}); 









}); 

};

+0

Не можете ли вы просто сделать два запроса асинхронного запроса? Например, с асинхронной библиотекой. https://github.com/caolan/async –

+0

Hi Patryk, Можете ли вы помочь мне с синтаксисом использования async, пожалуйста? Я новичок в node.js, поэтому никогда не использовал async. – Aditya

ответ

0

@Aditya Я не уверен, что это лучший способ сделать это, хотя я бы просто сделал два разных запроса, чтобы достичь того, что вам нужно. Как я уже упоминал в своем комментарии, самым простым способом было бы использовать (например) библиотеку async. И вот пример, который вы попросили.

ВНИМАНИЕ: Я не смотрел на MySQL документы

const async = require('async') 

// { 
    async.series([ 
    function(next) 
    { 
     new sql.Request() 
     .query('SELECT * from PERSON', next(err, resultList)) 
    }, 
    function(next) 
    { 
     new sql.Request() 
     .query('SELECT COUNT(*) from PERSON', next(err, count)) 
    } 
    ], (err, result) => 
    { 
    /* 
     err: String 
     - if any of the shown above return an error - whole chain will be canceled. 

     result: Array 
     - if both requests will be succesfull - you'll end up with an array of results 

     --- 

     Now you can render both results to your template at once 

    */ 
    }) 
// } 

Конечно, если вы хотите управлять с ошибками или результатов, как только вы получите их - вы всегда можете нажать ошибку и результаты новой функции, играть с ваши данные, а затем возвратить обратный вызов. Например:

function(next) 
{ 
    new sql.Request() 
    .query('SELECT * from PERSON', (err, resultList) => 
    { 
     if (err) 
     { 
     return next(err, null)    
     } 

     /* 
     data manipulation 
     */ 

     return next(null, resultList) 
    }) 
},