2013-11-10 3 views
0

Я использую Sequelizejs и я пытаюсь создать функцию проверки простой пользовательскийSequelizejs обещает возвращает пустой объект

function ValidateIsUserLogged(sessionKeyInput) { 
     var result = app.get('dbContext').user 
     .find({ 
      where: { 
      sessionKey: sessionKeyInput 
      } 
     }) 
     .then(function (user) { 
      return user != null; 
     }, function (error) { 
      console.log(error); 
     }); 

     return result; 
} 

в .then() пользователь прекрасно это тот же самый правый объект и все хорошо, но я хочу получить результат вне обещания. Я попытался с .success(). Error() и теперь с .then() результат (почти) тот же, у меня есть пустой объект, и я не могу получить результат от функции в обещании. Я попытался установить переменную в .then(), но результат такой же переменной не изменит ее значение или функция уже вернула значение (до того, как значение присвоено/изменено). Я знаю, что это асинхронный метод, и, возможно, речь идет о обещаниях как общих, но я застрял здесь несколько дней. Любая помощь приветствуется :)

ответ

0

Написать синхроимпульсов эквивалент:

function validateIsUserLogged(sessionKeyInput) { 
    try { 
     var user = app.get('dbContext').user 
      .find({ 
       where: { 
        sessionKey: sessionKeyInput 
       } 
      }); 
     } 
    catch(error) { 
     console.log(error); 
    } 
    return user != null; 
} 

Modify его:

function validateIsUserLogged(sessionKeyInput) { 
    try { 
     var user = app.get('dbContext').user 
      .find({ 
       where: { 
        sessionKey: sessionKeyInput 
       } 
      }); 
     } 
    catch(error) { 
     console.log(error); 
    } 
    return user; 
} 

Переводя выше, назад к обещаниям:

function validateIsUserLogged(sessionKeyInput) { 
    return app.get('dbContext').user 
    .find({ 
     where: { 
      sessionKey: sessionKeyInput 
     } 
    }).then(function(user) { 
     //This is pointless but I have no idea what you want to do 
     return user; 
    }, function(error) { 
     console.log(error); 
    }); 
} 
+0

я стараюсь, чтобы увидеть, если ключ сеанса действителен -> поэтому, если я нахожу пользователя, который не является null, я возвращаю его как true; в вашем методе я снова получаю проблему с пустым объектом –

+0

@Daemonyoyo У меня не было решения, но намек на то, что если вы пишете код, как если бы он был синхронным и решает проблему, тогда это можно перевести непосредственно в код на основе обещаний – Esailija

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