2013-05-10 3 views
1

Я хотел бы получить переменные «пользователь» вне функции:Nodejs получить переменную

var users; 

    client.lrange("comptes", 0, -1, function(err, replies) { 

    replies.forEach(function(reply, i) { 
     users = JSON.parse(reply.toString()); 
    }); 
}); 

// here to retrieve the "users" variable 
console.log(users); // = undefined 

function findById(id, fn) { 
    var idx = id - 1; 
    if (users[idx]) { 
    fn(null, users[idx]); 
    } else { 
    fn(new Error('User ' + id + ' does not exist')); 
    } 
} 

function findByUsername(username, fn) { 
    for (var i = 0, len = users.length; i < len; i++) { 
    var user = users[i]; 
    if (user.username === username) { 
     return fn(null, user); 
    } 
    } 
    return fn(null, null); 
} 

Я использую Q или async модуля, но я не знаю, как это сделать ..

Спасибо за вашу помощь .

ответ

0

Эта переменная относится к сфере использования, что означает, что ее можно определить только в том случае, если вы никогда не давали ей значения (что вы не делаете, если не считаете обратный вызов). Попробуйте использовать линию var users = "damn not yet";, и это, вероятно, то, что вы получите в консоли. Это означает, что ваша функция обратного вызова для lrange либо не вызывается, либо логика неверна.

+0

это нормально: 'функция findByUsername (имя пользователя, п) { client.lrange ("Comptes", 0, -1, функция (эээ, ответы) { replies.forEach (функция (ответ, я) { пользователей = JSON.parse (reply.toString()); Tusers (пользователи); }); }); функция Tusers (пользователи) { для (var i = 0, len = users.length; i PixelPixel

0

что-то вроде этого?

getcomptes = function(callback){ 
    client.lrange('comptes', 0, -1, function(err, users){ 
      callback(err, users); 
    }); 
}; 
Смежные вопросы