Двойная консультация в get

Я, должно быть, заставляю 2 консультироваться, чтобы наполнять таблицу в jade, но всегда меня берет вторая консультация, как я делаю для того, чтобы она стала 2, консультироваться, и меня наполнила таблица правильно.

getAnalisisDetallado: function(req, res, next) {
        console.log('Entro aqui');
        var config = require('.././database/config');

        sql.connect(config)
            .then(function() {
                var articulos = null;
                var request = new sql.Request();
                request.query("SELECT t.SI_Articulo, m.SI_Descripcion, t.SI_UM, (CASE WHEN c.SI_OV IS NOT NULL THEN '*' ELSE NULL END) AS SI_OV, t.SI_Ubicacion, t.SI_Existencia, c.SI_Cantidad, c.SI_Cantidad - t.SI_Existencia AS SI_Dif , (c.SI_Cantidad - t.SI_Existencia) * m.SI_Costo_Promedio AS SI_Dif_Dinero FROM SI_Inventario_Teorico_QAD t INNER JOIN SI_Maestro_Ref_QAD m ON m.SI_Num_Articulo = t.SI_Articulo LEFT JOIN SI_Conteo c ON c.SI_Num_Articulo = t.SI_Articulo")
                    .then(function(recordset) {
                        articulos = recordset['recordset'];
                        console.log('Recordset: ' + recordset);
                        console.log('Affected: ' + request.rowsAffected);
                        sql.close();
                        res.render('menu/analisisDetallado', { ListArticulos: articulos });

                    })
                    .catch(function(err) {
                        console.log('Request error: ' + err);
                    });

            })
            .catch(function(err) {
                if (err) {
                    console.log('SQL Connection Error: ' + err);
                }
            });

        sql.close();
        sql.connect(config)
            .then(function() {
                var request = new sql.Request();
                request.query("SELECT Sk_Codigo_Usuario from Sk_Usuarios")
                    .then(function(recordset) {
                        const usuarios = recordset['recordset'];
                        // const usu = usuarios[0];
                        console.log(usuarios);
                        console.log('yuyu: ' + recordset);
                        console.log('Affected: ' + request.rowsAffected);
                        sql.close();
                        res.render('menu/analisisDetallado', { ListArticulos: usuarios });

                    })
                    .catch(function(err) {
                        console.log('Request error: ' + err);
                    });
            })
            .catch(function(err) {
                if (err) {
                    console.log('SQL Connection Error: ' + err);
                }
            });

    }

этот - jade где эта таблица

  div(class="container aDetallado")
    div(class="row center span10")
      table(id="example-table" class="table table-striped table-hover table-condensed")
        thead
          tr
            th='Articulo'
            th='Descripción'
            th='Um'
            th='Ov'
            th='#Ubic'
            th='Teorico'
            th='Conteo2'
            th='Dif'
            th='Dif $'
            th='Asignar conteo'
            th='Seleccionar'
          tbody
            each Articulos in ListArticulos
              tr
                td= Articulos.SI_Articulo
                td= Articulos.SI_Descripcion
                td= Articulos.SI_UM
                td= Articulos.SI_OV
                td= Articulos.SI_Ubicacion
                td= Articulos.SI_Existencia
                td= Articulos.SI_Cantidad
                td= Articulos.SI_Dif
                td= Articulos.SI_Dif_Dinero
                td
                  select
                    option
                      each usuario in ListUsuario
                        option(value=usuario.Sk_Codigo_Usuario) #{usuario.Sk_Codigo_Usuario}
                td
                  input(type="checkbox")
0
задан 27.06.2017, 16:55
2 ответа

Проблема ясная, ты должен надеяться на то, что заканчивают две консультации для renderear страницу, называешь res.render двумя разами, и только должен делать это однажды из-за request, проверьте модуль mssql и мне казалось, что он работал с promises, в этом случае ты должен делать две просьбы в sql и сохранять результат, но не renderear страница каждый раз, а в конце двух просьб renderear страница со стоимостью двух просьб, в вопросе оба используют ListArticulos, но из-за комментария я предполагаю, что одного ListUsuarios, тогда после того, как у тебя есть все данные ты сделал бы:

res.render('menu/analisisDetallado', { 
    ListArticulos: firstSqlRequest,
    ListUsuarios: secondSqlRequest,
});
2
ответ дан 24.11.2019, 07:57

Хорошие, я рекомендую тебе использовать их mГіdulos async , mssql и debug , podrГЎs упрощать много ты cГіdigo, и с mГіdulo debug , sГіlo ты saldrГЎn сообщения в консоли, когда ты это выполнишь.

AsГ - cГіmo помещать твои консультации все вместе в файл.

переместил Тебя пример, dГіnde я выполняю две функции с 5 или 6 консультациями в несколько баз данных и прямую консультацию.

router.get('/:id', function(req, res, next) {
    var reqAx = new sql.Request(dbConfig.config)
    async.waterfall([
        function(callback){
            auxFunctions.getInfo1(machineID, 'empresa', function(array1){
                callback(null, Array1);
            });
        },
        function(array1, callback){
            reqAx.query(qrys.qry_messages('grupoX', id,'ent'))
            .then(function (messages){
                callback(null, oftArrayFullInfo, messages)
            })
        },
        function(array1, messages, callback){
            auxFunctions.getInfo2(id, 'empresa', array1, function(array2){
                callback(null, array1, messages, array2);
            });
        }   
    ],
    function(err, array1, messages, array2){
        if(err) {debug('****** ERROR ASYNC: \n %s', err); }
        else{
            if (array1.length>0){
                res.render('info', {title: 'Info', array1, array2, messages});}
            else{ res.redirect('/'); }
        }
    });
});
0
ответ дан 24.11.2019, 07:57