2016-04-23 18 views
0

私は非常に基本的なことをしようとしています - データベース内のユーザーを見つけて特定の見つかったレコードのフィールドの1つを返します。教育目的のために、私は約束を使用したいと思っています。マングースの約束を返す

var username = "user1" // assuming this exists: User({username: "user1", city: "London"}) 

function getUser(username) { 
    var promise = User.findOne({username: username}).exec(); 

    var output = promise.then(function(user) { 
     return user.city; 
    }).catch(function(err) { 
     console.log(err); 
    }); 
    return output; 
} 

上記のコードでは、与えられたデータを持つユーザーがいると仮定すると、出力変数は引き続き約束です。どうすればそれの実際の価値を得ることができますか?私は、私の問題は、非同期ではないリターンステートメント、つまり、実際に解決される前に出力を返すということに気をつけています。値を返す正しい方法は何でしょうか?

答えて

2

あなたは約束を返し、約束が解決されたときに値を取得するためにあなたが戻っ約束をthenを呼び出す必要があります。

function getUser(username) { 
    return User 
     .findOne({username: username}) 
     .then(function(user) { 
      return user.city; 
     }) 
     .catch(function(err) { 
      console.log(err); 
     }); 
} 

// How to use getUser 
getUser('John') 
    .then(function(city) { 
     console.log(city); 
    }); 
関連する問題