Я не могу Синхронизировать функцию в REST с NODEJS язык сценариев JavaScript

У меня есть Большое сомнение. Когда я посылаю выполнять консультацию в базе данных следующего способа, внутри функции, где я выполняю консультацию, я загружаю вектор или Json, который определен вне вышеупомянутой функции как let, но после выполнять консультацию я не могу видеть данные, загруженные в array, но если я размещаю один console.log внутри, если я могу видеть, что он загружается правильно.

Я копирую код, чтобы видеть, возможно ли, что они дают мне руку с уже большое спасибо, я использую NODE js с FIREBIRD BD

КОД:

 app.get('/productos/ConfigPF', function(req, res) {
    let tipProd = req.query.tip_prod || 0;
    tipProd = Number(tipProd);

    let idProd = req.query.id_prod || 0;
    idProd = Number(idProd);

    let arrayprod = {} // empty Object
    let key = 'ConfiracionPF';
    // empty Array, which you can push() values into
    arrayprod[key] = [];

    queryDB(`SELECT CA.ETIQUETA, CA.NOM_FORMU , CA.ID_CAMPO,CA.TIP_CARGA from tb_config_campo_pf PF,tb_config_campo CA  where pf.tip_prod = ${tipProd} and pf.id_pf = ${idProd} and pf.tip_prod = ca.tip_prod and pf.id_campo = ca.id_campo`).then(
        // success
        function(rs) {
            rs.forEach(function(row) {
                //console.log(row.IMAGEN);
                //Armar JSON
                var imagenf = ab2str(row.IMAGEN);

                var data = {
                    etiqueta: ab2str(row.ETIQUETA),
                    valor_col: ab2str(row.NOM_FORMU),
                    id_campo: row.ID_CAMPO,
                    valor: 0,
                    tip_carga: row.TIP_CARGA,
                    valor_combo: "0"
                };
                arrayprod[key].push(data);
            });
            disconnectFromDB();
            console.log(arrayprod); //Esta cargado OK
            return arrayprod
        },
        // fail
        function(err) {
            console.log(err);
            disconnectFromDB();
            return res.status(400).json({
                ok: false,
                err
            });
        }
    );    

    console.log(arrayprod); //no veo nada

    for (let i in arrayprod) {
        for (let j in arrayprod[i]) {
            if (arrayprod[i][j].tip_carga == 1) {
                arrayprod[i][j].valor_combo = "40_50"
            }
        }
    }

    res.json({
        ok: true,
        arrayprod
    })
});
0
задан 17.03.2019, 02:03
1 ответ

Я я функционирую первой инстанции, тема состоит в том, что я хочу сделать следующее, и считает мне высоким for, это не ждет, что я закончил, и продолжает.

Оставил код:

app.get('/productos/ConfigPF', function(req, res) {
    //res.json('get Usuarios')
    let tipProd = req.query.tip_prod || 0;
    tipProd = Number(tipProd);

    let idProd = req.query.id_prod || 0;
    idProd = Number(idProd);

    let arrayprod = {} // empty Object
    let key = 'ConfiracionPF';
    // empty Array, which you can push() values into
    arrayprod[key] = [];

    queryDB(`SELECT CA.ETIQUETA, CA.NOM_FORMU , CA.ID_CAMPO,CA.TIP_CARGA,ID_CATG,ID_CAM_STOCK from tb_config_campo_pf PF,tb_config_campo CA  where pf.tip_prod = ${tipProd} and pf.id_pf = ${idProd} and pf.tip_prod = ca.tip_prod and pf.id_campo = ca.id_campo`)

        .then(
        // success
        (rs) => {
            // realizas operaciones con rs y llenas el array
            rs.forEach(function(row) {
                //console.log(row.IMAGEN);
                //Armar JSON
                var imagenf = ab2str(row.IMAGEN);

                var data = {
                    etiqueta: ab2str(row.ETIQUETA),
                    valor_col: ab2str(row.NOM_FORMU),
                    id_campo: row.ID_CAMPO,
                    valor: 0,
                    tip_carga: row.TIP_CARGA,
                    valor_combo: "0",
                    id_categ: row.ID_CATG,
                    id_cam_stock: row.ID_CAM_STOCK
                };
                arrayprod[key].push(data);
            });
            disconnectFromDB();
            console.log("Pase primer Select"); // verificas que tienes los datos

            let sqlsentencia = "";
            // realizas operaciones con tu array
            for (let i in arrayprod) {
                for (let j in arrayprod[i]) {
                    if (arrayprod[i][j].tip_carga == 1) {
                        if (arrayprod[i][j].id_cam_stock == 5)
                        {
                            sqlsentencia = `select CAMPO5 AS CAMPO from TB_ITEM_STOCK where id_categoria =  ${arrayprod[i][j].id_categ}`;
                        }

                        if (arrayprod[i][j].id_cam_stock == 6)
                        {
                            sqlsentencia = `select CAMPO6 AS CAMPO from TB_ITEM_STOCK where id_categoria =  ${arrayprod[i][j].id_categ}`;
                        }

                        if (arrayprod[i][j].id_cam_stock == 7)
                        {
                            sqlsentencia = `select CAMPO7 AS CAMPO from TB_ITEM_STOCK where id_categoria =  ${arrayprod[i][j].id_categ}`;
                        }

                        if (arrayprod[i][j].id_cam_stock == 8)
                        {
                            sqlsentencia = `select CAMPO8 AS CAMPO from TB_ITEM_STOCK where id_categoria =  ${arrayprod[i][j].id_categ}`;
                        }

                        if (arrayprod[i][j].id_cam_stock == 9)
                        {
                            sqlsentencia = `select CAMPO9 AS CAMPO from TB_ITEM_STOCK where id_categoria =  ${arrayprod[i][j].id_categ}`;
                        }

                        if (arrayprod[i][j].id_cam_stock == 10)
                        {
                            sqlsentencia = `select CAMPO10 AS CAMPO from TB_ITEM_STOCK where id_categoria =  ${arrayprod[i][j].id_categ}`;
                        }

                        queryDB(sqlsentencia)
                        .then((rs) =>   {
                            // realizas operaciones con rs y llenas el array
                            console.log("Pase segundo Select");
                            let valores = "";
                            rs.forEach(function(row) {
                                if (valores = "")
                                {
                                    valores = ab2str(row.CAMPO);
                                }
                                else
                                {
                                    valores = valores + "_";
                                    valores = valores + ab2str(row.CAMPO);
                                }

                            });
                            arrayprod[i][j].valor_combo = valores;
                            valores = "";
                            disconnectFromDB();                        
                         },
                         (err) => {
                            console.log("error");
                        }); // termina el then()
                    }
                }
            }

            console.log(arrayprod);
           // ahora ya puedes hacer uso de res.json
           res.json({
               ok: true,
               arrayprod
           });
        },
        (err) => {
            console.log("error");
        }); // termina el then()
}); // termina el app.get()
0
ответ дан 02.12.2019, 05:33
  • 1
    Это solució n в проблему? –  19.03.2019, 02:01
  • 2
    Привет Nicolá s, если это другой вопрос, у которого есть различия напротив оригинала, который ты напечатал, и считая, что уже она была отвечена, я рекомендую тебе печатать новый вопрос. Спасибо за поддержание порядка в сайте :D – fredyfx 19.03.2019, 02:25
  • 3
    Как хорошо они предлагают тебе, ты можешь печатать другой вопрос, так как сейчас проблема кажется различной. В любом случае, если второй цикл for не работает, возможно будьте, потому что консультация не бросает оказанные. ¿ Ты это проверил? Привет – Mauricio Contreras 19.03.2019, 09:17
  • 4
    Точной является solució n в проблему, я буду формулировать другой вопрос для другого случая. Большое спасибо всем. – Nicolás Ovejero 20.03.2019, 02:29

Теги

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