2013-12-25 1 views
0

У меня проблема с этими переменными, я хочу проверить, являются ли они одинаковыми, и если да, я хочу, чтобы вся функция «overeni» возвращала true, но переменные не определены. Я пробовал почти все. Спасибо за ваше время.Получить значения callback funcion sql

function overeni(id,auth){ 
    var sqlid; 
    var sqlauth; 
    var sql = "SELECT id FROM login WHERE auth = " + client.escape(auth); 
    client.query(sql ,function(err,res){  
    console.log(res[0].id); 
    sqlid = res[0].id; 
    }); 
    var sql = "SELECT auth FROM login WHERE id = " + client.escape(id); 
    client.query(sql ,function(err,res){ 
    console.log(res[0].auth); 
    sqlauth = res[0].auth; 
    }); 
    if(id == sqlid && auth == sqlauth){ 
    return true; 
    } 
    else{ 
    return false; 
    }  
} 
+2

Это потому, что 'client.query()' вызовы асинхронные, а это означает, что ваше если/другое условие будет выполняться до два '.query()' завершены. –

+0

ах, есть ли способ, как это сделать? благодаря –

ответ

0

Я думаю, что есть 2 способа

1) используют обратные вызовы вместо возвращения

function overeni(id,auth, callback){ 
.... 
client.query(sql ,function(err,res){  
    ..... 
    if (sqlid && sqlauth) {callback(sqlid, sqlauth);} 

});

2) или использовать некоторые отложенные библиотеки (например, JQuery/когда/Q и т.д.)

Смежные вопросы