javascript - 将mysql查询返回到nodejs flash消息
问题描述
我正在寻找按办公室号码查询跟踪号码。然后将跟踪号传递给帖子中的 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
路由.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
解决方案
你能试试这个
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)
推荐阅读
- python - 尝试上传图像时,Flask 应用程序会提供 500(内部服务器错误)页面(没有任何错误回溯)。我究竟做错了什么?
- windows - MS Visual Studio 2017 的 Cordova 移动应用程序
- vba - 如何使用 DAO 更新记录集
- amazon-web-services - 在 CloudFormation 条件中使用宏
- google-app-engine - Google Appengine 标准:Java8 使用 IAP 和 ESP 设置端点
- javascript - 从当前组件进行成功的 api 调用后,向另一个反应组件显示警报
- css - 输入边框为半灰色
- angular - 从 'file-saver' 导入 {saveAs}:CommonJS 或 AMD 依赖项可能导致优化救助
- apache-spark - 从 Databricks 到 Azure Synapse Analytics:当我们将数据帧加载到表中时,为什么需要将 parquet.writeLegacyFormat 设置为 True?
- python - 在数值积分过程中两个物体之间的距离保持不变