我的node.js应用程序出现问题,它返回TypeError: Cannot read property 'role' of undefined
,这是我在我的硬编码中添加过滤器角色之后,在我的路由器中这样的代码
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时,我的服务器出现故障导致应用程序崩溃。
另一个奇怪的是,如果第一次去网址没有发生任何事情,这意味着他接受了我的过滤器'角色'的规则,为什么它可以渲染?
最后一件事,如果我把控制台日志返回一行,它返回0。为什么?实际上该查询中有一行。