2014-02-11 3 views
4
, notEnterUsers: function(){ 
     var users; 
     this.store.get("users",function(err,result){  
     var result = JSON.parse(result); 
     users = result.filter(function(element, index, arr){ 
      return (element.status === 0); 
     }); 
     }); 

     console.log(users); 
     return users; 
    } 

Как решить эту проблему user = undefinded?узел redis get() синхронный help me

правило 1 ....

должен быть возвращенным пользователи объекта

ответ

0

С Node.js, вы должны использовать продолжение прохождения стиля (CPS). Этот пример не может работать, потому что обратный вызов, заданный как параметр get, еще не выполнен, когда выполняется «console.log (users)».

Функция notEnterUsers должен иметь параметр обратного вызова и вызывать его, как только пользовательская переменная заполняется. Что-то вроде:

, notEnterUsers: function(callback){ 
     var users; 
     this.store.get("users",function(err,result){  
     var result = JSON.parse(result); 
     users = result.filter(function(element, index, arr){ 
      return (element.status === 0); 
     }); 
     callback(users); 
     }); 
    } 

Node.js является принципиально асинхронной и сценарии должны попытаться принять его, а не пытаться имитировать синхронное поведение.