【发布时间】:2023-03-29 12:55:02
【问题描述】:
在将标头发送到客户端后无法设置标头我收到此错误。我做了一些研究,我认为这是因为不止一个回调,但我无法解决这个问题。请帮我解决这个问题。我附上我的 routes.js 代码。任何帮助都将是非常可观的。谢谢。
这是我的 routes.js 代码
const {
con,g
sessionStore
} = require('./config/db');
const { route } = require('./routes/auth');
exports.new = function(req, res){
message = '';
if(req.method == "POST"){
const post = req.body;
const username= post.username;
const title= post.title;
const state= post.state;
const category= post.category;
const description= post.description;
if (!req.files)
return res.status(400).send('No files were uploaded.');
const file = req.files.uploaded_image;
var img_name=file.name;
if(file.mimetype == "image/jpeg" ||file.mimetype == "image/png"||file.mimetype == "image/gif" ){
file.mv('public/imgs/uploads/'+file.name, function(err) {
var sql = "INSERT INTO `nt_data`(`username`,`title`,`state`,`category`, `images` ,`description`) VALUES (?,?,?,?,?,?)";
var query = con.query(sql, [username, title, state, category, img_name, description], function(err) {
console.log(err)
if (!err) {
res.redirect('show/' + username);
}
else {
message = "This format is not allowed , please upload file with '.png','.gif','.jpg'";
res.render('new.ejs',{message: message});
}
});
});
}
}
else {
res.render('new');
}
};
exports.show = function(req, res){
let message = '';
var username = req.params.username;
const sql="SELECT * FROM `nt_data` WHERE `username`='"+username+"'";
con.query(sql, function(err, result){
console.log(err)
if(result.length <= 0){
message = "show not found!";
res.render('show.ejs',{data:result, message: message});
}else{
res.redirect('/places');
}
res.render('show', {data:result, message: message});
});
};
exports.places=function (req,res){
let message = '';
var username = req.params.username;
const sql="SELECT * FROM `nt_data` WHERE `username`='"+username+"'";
con.query(sql, function(err, result){
console.log(err)
if(result.length <= 0)
message = "places not found!";
res.render('places.ejs',{data:result, message: message});
});
}
【问题讨论】:
-
您需要将所有带有回调的函数调用转换为带有
Promise的异步函数。这样,您的代码将更加连续,并且您可以轻松解决问题。并通过连接字符串将用户输入插入 SQL 查询来避免 SQL 注入。了解如何使用查询参数。
标签: javascript mysql node.js database express