как получить mysql nodejs для отправки переменной после загрузки запроса - PullRequest
0 голосов
/ 07 августа 2020

Я искал обещания, но не могу понять, и я не понимаю их. Я знаю, что все остальное работает и отправляет данные клиенту, просто пустые. и это потому, что я не могу назначить переменную вовремя, когда sql закончил?

app.post('/api', urlencodedParser,function(req, res,next) {

  console.log(req.body);
  var data = req.body.productObjs;
var bool;


  data.forEach(function(product) {

    connection.query(`SELECT * FROM productInfo where specId = ${product.productSpec}`,function(error,rows){
      
(error,rows)=>{

      if (error) {
        next('error making the query: ' + error.message)
      }
       else {
        console.log(rows[0]['specId'])
        console.log(rows[0]['productPrice'])
        if (product.productPrice === rows[0]['productPrice']) {
      bool=true
        }
        if (product.productPrice !== rows[0]['productPrice']) {
bool=false
        }
      }
    })

});
 //res.send({"bool":bool})
})
})

1 Ответ

0 голосов
/ 07 августа 2020

Итак, самая первая очевидная проблема заключается в том, что у вас есть обратный вызов внутри обратного вызова. Это будет моя первая попытка рефакторинга:

app.post('/api', urlencodedParser, function (req, res, next) {
  console.log(req.body);
  const data = req.body.productObjs;
  let bool;

  data.forEach((product) => {
    connection.query(`SELECT * FROM productInfo where specId = ${product.productSpec}`, (error, rows) => {
      if (error) {
        next('error making the query: ' + error.message);
      } else {
        console.log(rows[0]['specId']);
        console.log(rows[0]['productPrice']);
        bool = product.productPrice === rows[0]['productPrice'];
      }
    });
  });
});
  1. Я удалил двойные обратные вызовы
  2. Упрощенное условие для присвоения вашего значения bool переменной
  3. Изменены типы на современный JS синтаксис
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...