connection.query('select * from `test` WHERE `deny`=false',function(err,rows,fields){
for (var i=0; i<rows.length; i++){
if (rows[i].enddate == mydate)
{
msg = "message";
connection.query('select * from `cash` WHERE `id`=test',function(err2,rows2,fields2){
if (rows2[0].cash >= 30)
{
connection.query('UPDATE `cash` SET `cash`='+ rows2[0].cash-30 +' WHERE `id`=test',function(err3,rows3,fields3){
msgsend(rows[i].contact,msg);
});
}
});
}
}
});
这是我的代码。 但是,当我运行我的代码 它显示如下错误: TypeError:无法读取未定义的属性“0”
请帮忙 我的代码出了什么问题?
答案 0 :(得分:0)
首先尝试使用
进行调试 console.log(rows)
和console.log(rows2)
可能是其中一个是空的。
此外,错误参数是有原因的,您可以捕获错误参数并检查它们:
if(err) console.log(err)
else //rest of program
同样err2
if(err2) console.log(err2)
else //rest of program
这绝对有助于解决问题
修改强>
你把调试行放在哪里?
显然你需要调试的地方
喜欢
function(err,rows,fields){
console.log(rows); //undefined if empty
if(err) console.log(err);
else //rest code
}
答案 1 :(得分:0)
您是否尝试过Async
connection.query('select * from `test` WHERE `deny`=false',function(err,rows,fields) {
for (var i=0; i<rows.length; i++){
if (rows[i].enddate == mydate) {
myFuntion(row[i], function(msg) {
console.log(msg) // Success!
})
}
}
})
function myFuntion(row, callback) {
async.waterfall([
function(callback) {
msg = "message";
connection.query('select * from `cash` WHERE `id`=test',function(err2,rows2,fields2){
callback(null, rows2);
});
}, function(rows2, callback) {
if (rows2[0].cash >= 30)
{
connection.query('UPDATE `cash` SET `cash`='+ rows2[0].cash-30 +' WHERE `id`=test',function(err3,rows3,fields3){
msgsend(row.contact,msg);
callback(null);
});
}
}
], function(err){
if(err)
console.log("Error: ", err);
else
callback("Success!");
})
}