2017-07-13 2 views
0

私はnodejsを初めて使用しており、コレクションからユーザーを見つけるためのヘルパー機能を作成したいと考えています。新しい文書をデータベースに追加する前に、そのヘルパー関数を実行したいと思います。 Parallaly私はそのヘルパー関数を他の場所で何度も使用したいと思っています。nodejsでasyncを使用することをお勧めしますか? nodejsでヘルパー関数を使用するには?

単純に1つの関数を作成し、その関数の結果を格納すると、コントロールはその場所から渡され、Nodejsの基本的な非同期機能として出力を待機しません。

どのように私は

どのようにネストされたコールバックを使用するヘルパー関数を使用して結果を待ってから、必要な操作を実行するために私のコードをカスタマイズすることができますか? ネストされたコールバックは、コールバックデータおよび制御を待っていないことはここでは次の行に

を行く私のコードです:

login: function (req, res) { 

    var user = helpers.checkIfDataExists(req.body.mobileNumber, function (user) { 
    if (user) { 
     console.log('user exists'); 
     var email = helpers.checkIfDataExists(req.body.email, function (email) { 
      if (email) { 
      console.log('email exists'); 
      } else { 
      console.log('email not exists'); 
      } 
     }); 
    } else { 
     console.log('user not exists') 
    } 
    }); 
} 

私は機能まで待機するが実行され、その後、条件が実行されますことをしたいです。 ここで、制御はデフォルトでelse部分で毎回行われます。

checkIfDataExists: function (value, callback) { 
    User.find({mobileNumber: value}) 
        .exec(function (err, result) { 
         if (err) { 
          console.log('Error occured'); 
          callback(false); 
         } else { 
          console.log('result found'); 
          callback(result); 
         } 
        }); 
}, 

答えて

0

使用コールバック:ここ

は、ヘルパー関数のコードです。結果が返されるヘルパー関数にコールバック関数を渡し、ヘルパー関数で計算が終了したらその関数への呼び出しを書き込みます。

checkIfDataExists: function (value, callback) { 
    User.find({mobileNumber: value}) 
        .exec(function (err, result) { 
         if (err) { 
          console.log('Error occured'); 
          callback(false); 
         } else if (!result) { 
          console.log('Not Found'); 
          callback(false); 
         } else { 
          console.log('result found'); 
          callback(result); 
         } 
        }); 
}, 

次に、このような機能をメインの機能で使用します。ここ

signUp: function (req, res) { 

    var user = helpers.checkIfDataExists(req.body.mobileNumber, function(user){ 

// do something with results here 
log(user); 
    if (!user) { 
     // add new user 
    } else { 
     res.send("User exists"); 
    } 
}); 
} 

は私がコールバックを入れ子にしている場合は、私のコードは待つことができるどのようにコールバック

+0

程度articleへのリンクですか? それはそれを待っていません –

+0

あなたも入れ子にされたコールバックを使用することができますが、そのためにあなたのコードを整理する必要があります。それは良い練習を必要とします。 –

+0

投稿したコードであなたのケースで上記のコードが動作する –

関連する問題