Возврат mysql-запроса к флеш-сообщению nodejs - PullRequest
0 голосов
/ 05 ноября 2018

Я ищу запросить номера отслеживания по номеру офиса. Затем передайте номера отслеживания req.flash в сообщении. Я могу получить данные для записи на консоль, у меня возникают проблемы с возвратом их в программу основного узла, поэтому я могу использовать эти данные в сообщении req.flash. Как я могу получить результаты запроса в основную программу javascript, чтобы я мог перенести результаты запроса в req.flash?

Я пробовал несколько разных звонков.

Вот мой вывод с консоли

[nodemon] starting `node src/server.js`
body-parser deprecated undefined extended: provide extended option src\server.js:20:14
App running at http://localhost:3000
Sanitized: { officeNumber: '1212' }
the output is 0
result from db is :  12121212121212
result from db is :  124563356743435
result from db is :  354466436646464
result from db is :  363548367868575

routes.js

const express = require('express')
const router = express.Router()
const { check, validationResult } = require('express-validator/check')
const { matchedData } = require('express-validator/filter')
var mysql   = require('mysql'),
    config  = require("./config");

    var con = mysql.createConnection(config.db);



router.post('/trackingnumbers', [
  check('officeNumber')
    .isLength({ min:4, max:4  })
    .withMessage('That office Number doesn‘t look right')
    .trim()
], (req, res) => {
  const errors = validationResult(req)
  if (!errors.isEmpty()) {
    return res.render('trackingnumbers', {
      data: req.body,
      errors: errors.mapped()
    })
  }

  const data = matchedData(req)
  console.log('Sanitized:', data)
var mysql_query3 = require('./mysql_query.js');
//////////////////////////////////////////////////////////
output = "0";



function getTrackingNumbers(officeN, callback)
{
    con.query('SELECT * from trackingnumbers where office_Number = ' + officeN, function(err, result)
    {
        if (err) 
            callback(err,null);
        else
            //console.log(result);   

            for (var i = 0; i < result.length; i++) {
              //  console.log(result[i]);
                //callback(null,result[i]);
                callback(null,result[i].tracking_Number);
            }

    });

}


//call Fn for db query with callback
 getTrackingNumbers(req.body["officeNumber"], function(err,data1){
        if (err) {
            // error handling code goes here
            console.log("ERROR : ",err);            
        } else {            
            // code to execute on data retrieval
            console.log("result from db is : ",data1);
            return data1;
        }    

});
/////////////////////////////////////////////////////////////////////////////
console.log("the output is " +  output);
  req.flash('success', 'Thanks your super cool has been inputted' + output)
  //can do 2 flashes here if need to

  res.redirect('trackingnumbers')
})





module.exports = router

1 Ответ

0 голосов
/ 05 ноября 2018

Можете ли вы попробовать это

getTrackingNumbers(req.body["officeNumber"], function(err,data1){
    if (err) {
        // error handling code goes here
        console.log("ERROR : ",err);            
    } else {            
        // code to execute on data retrieval
        console.log("result from db is : ",data1);
        req.flash('success', 'Data' + data1);
        return data1;
    }    
});

Поскольку Node является асинхронным, мы получим данные только при обратном вызове.


Если вы хотите показать мигание сообщения после перенаправления, вы можете передать данные в качестве параметра запроса

res.redirect('trackingnumbers/?message=The office number is '+data )

Затем внутри тела метода маршрута мы можем проверить параметр запроса 'message' и высветить сообщение.

if (typeof req.query.message !== 'undefined' && typeof req.query.message.trim() != "") {
    req.flash('success', req.query.message)
}
const data = matchedData(req)
console.log('Sanitized:', data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...