2017-09-08 14 views
0

データベース(Mongo)の関数から結果を得ました結果に基づいてドーム変数を保存しましたが、その変数を外側の関数で使用することはできません。どのように変数にアクセスできますか?どのようにノードjsのグローバル変数にmongooseの結果を割り当てることができますか?

現在、私はconsole.butを使って関数内で結果を得ました。私は未定義の外部変数で同じ変数を使用しますが、私は同じエラーが発生しています。 タイムアウト機能なしこれをどのように完了できますか?

 var all_mail; 
 
    mailModel.find({}, function (err, docs) { 
 
       console.log(docs); //Got results this console 
 
       all_mail = docs; 
 
       
 
      }); 
 
    console.log(all_mail); //This is showing undefind

答えて

1

あなたはNode.jsの非同期動作をどのように処理するかを検討したいと思います。この場合、コールバック関数は範囲内にある間はdocsにしかアクセスできません。

長時間待つと、変数が割り当てられる可能性が高いと考えても間違いありません。しかし、これは本当に物事をするノードの方法ではありません。

find()に渡す機能内で、docsとしたいことを何でもしてください。

mailModel.find({}, function (err, docs) { 
    doSomething(docs); 
}); 

これにより、プログラムの構造が大きく変わることがあります。お使いのノードのバージョンがサポートしている限り、約束(http://mongoosejs.com/docs/promises.html)をMongooseで使用してからasync/awaitを使用して調べることもできます。

var docs = await mailModel.find({}).exec(); 
doSomething(docs); 

は、私は次のようになりawaitとの約束を使用して信じています

関連する問題