TypeError:成功呈现视图Node.JS后,无法读取未定义的属性“角色”

时间:2017-07-05 13:55:38

标签: javascript sql node.js express

我的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。为什么?实际上该查询中有一行。

0 个答案:

没有答案