【问题标题】:Return mysql query to nodejs flash message将mysql查询返回到nodejs flash消息
【发布时间】:2018-11-05 12:12:52
【问题描述】:

我希望按办公室号码查询跟踪号码。然后将跟踪号传递给帖子中的 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

【问题讨论】:

    标签: javascript mysql node.js express


    【解决方案1】:

    你可以试试这个

    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 )
    

    然后在路由方法的主体中,我们可以检查查询参数“消息”并闪烁消息。

    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)
    

    【讨论】:

    • 我试过了,同样的问题。这是结果。它确实让数据闪烁。 code 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
    • @SwimJim - ** 它确实让数据闪烁。 ** 抱歉,还需要什么?您想在重定向后打印 Flash 消息吗?请看答案中的补充。
    • @SwimJim - 你经历过npmjs.com/package/req-flash
    • 感谢您的帮助,我已经完成了,问题不是闪存,而是我无法从该函数返回数组或对象。我按照您的指示,查询对象如下。还是不行http://localhost:3000/trackingnumbers/?message=The%20office%20number%20is%20[object%20Object]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 2018-04-30
    • 1970-01-01
    • 2019-04-28
    • 2013-06-12
    • 2019-10-24
    相关资源
    最近更新 更多