Javascript TypeError:在成功呈现view Node.JS后,无法读取未定义的属性“role”
我的node.js应用程序出现问题,它返回TypeError:无法读取未定义的属性“role”,这是在我将filter role放入硬代码之后,在我的路由器中类似这样的代码Javascript TypeError:在成功呈现view Node.JS后,无法读取未定义的属性“role”,javascript,sql,node.js,express,Javascript,Sql,Node.js,Express,我的node.js应用程序出现问题,它返回TypeError:无法读取未定义的属性“role”,这是在我将filter role放入硬代码之后,在我的路由器中类似这样的代码 var query1 = "SELECT payment_data .*, users.id as id_user , email , users.id_role as role FROM payment_data INNER JOIN users ON payment_data.username = users.user
var query1 = "SELECT payment_data .*, users.id as id_user , email , users.id_role as role FROM payment_data INNER JOIN users ON payment_data.username = users.username WHERE payment_data.username = '" + req.user.username + "' and transaction_code = " + connection.escape(req.params.tagihan) + "";
connection.query(query1,function(err,rows){
if (err){
res.render('error',{
responseCode : res.statusCode,
error : 'Terjadi Kesalahan',
message : err
});
res.end();
}
if (rows.length < 1){
console.log(rows.length);
res.render('error',{
responseCode : res.statusCode,
error : 'Terjadi kesalahan',
message : err
});
}
if (rows[0].role == "santri"){
var querySantri = "SELECT * FROM data_santri WHERE id_user = " + rows[0].id_user + "";
connection.query(querySantri,function(errDua,rowsDua){
if (errDua){
res.render('error',{
responseCode : res.statusCode,
error : 'Terjadi Kesalahan',
message : errDua
});
res.end();
}
if (!rowsDua.length){
res.redirect('/beranda');
res.end();
}
var pdd = [];
for(row in rows){
var pdd = rows[row];
}
var tghn = {
nama_lengkap : rowsDua[0].nama_lengkap,
email : rows[0].email,
alamat : rowsDua[0].alamat,
username : rows[0].username,
id_tagihan : rows[0].id,
nomor_tagihan : rows[0].transaction_code,
total_tagihan : rows[0].payment_total,
status_transaksi : rows[0].transaction_status,
tanggal_transaksi : rows[0].transaction_date,
channel_transaksi : rows[0].payment_channel,
data : pdd
}
// res.write(JSON.stringify(rows));
// res.end();
res.render('informasi/tagihan',{
auth: req.user,
tagihan : tghn,
moment : moment
});
res.end();
});
}else{
console.log('else');
}
});
这个调试中有些奇怪的地方是在渲染视图成功后,它正常显示,但在控制台返回错误的最后,所以当我再次刷新我的url时,我的服务器会关闭,导致应用程序崩溃
另一个奇怪的是,如果第一次访问url时什么也没有发生,这意味着他接受了我的过滤器“角色”的规则,那么为什么它可以呈现
最后一件事是,如果我将console log设置为返回一行,它将返回0。为什么?实际上,该查询中有行。请学习准备语句,这将很快进行SQL注入。谢谢,我使用insert语句或update语句时通过转义值来使用准备语句。您也需要在SELECT语句中使用它。我可以很容易地进行测试;删除所有数据库;-作为我的用户名和破坏你的服务器。哦,谢谢你,我要再次使用它。在你建议我之后,我意识到了这一点。谢谢你!按照此说明解决