この問題は完全に悩んでいます。私は長い間メモリに格納されたクエリ配列を持っています。それを使って、私はAPIを呼び出し、リクエストを発し、結果をMongoDBに保存します...問題ありません。残念ながら、私はコントロールregがありません。 APIサーバーといくつかのEconnet/TCP/IP接続エラーが原因で私のアプリケーションがクラッシュすることがあります。mongooseとノードを使用したクエリのタイミング
私のクエリタスクを再開できるように、私は自分のすべてのクエリを自分のMonogDBに書きました。実行中の各クエリのqueryStateを追跡/記録したいと思います。
私の問題は、Mongoから要求を発生させるメソッドにクエリを戻そうとするときに発生します。何らかのタイミング/非同期の問題(私は推測)に、私のqueryArrayはすべての時間を未定義たまま、私はそれは...
server.jsは解決されません:すべての未定義
//TEST
var querymongo = require('./config/queryMongo');
var queryobject = new querymongo;
var queryArray = queryobject.results();
queryArrayがままに時間...
queryMongo.js:
//require mongo model + db connection
var queryDB = require('./queryDB');
//constructor
...
//mongoRequest method
this.mongoRequest = function(){
console.log("Function mongoRequest called now!");
return new Promise(function(resolve, reject){
queryDB.queries.find({'SearchIndex': 'All'}, function(err, doc){
if(err) return reject (err)
else resolve (doc)
});
});
}
//resolve results
this.results = function(){
var queryArray = [];
this.mongoRequest().then(function(doc, err){
console.log(doc)
queryArray = doc;
return queryArray;
}).catch(function(err){
console.log(err)
});
}
}
module.exports = QueryMongo;
にconsole.log(DOC)メソッドは動作しますが、ですべてのドキュメントを返す結果で実行されているすべてのコードの終わり。ここでの問題は何ですか?
これは私が狂ったように私は非常に感謝しています!
おかげ
Hucho
「結果」関数で約束を返すか、コールバックを返すべきだと思います。あなたの 'QueryMongo'は非同期なので、それを同期関数として使うべきではありません –
これはまさに質問です。私はコードでステップバイステップでデバッグし、問題は私の結果関数respの "then"です。コールバックそれは再び非同期...別の約束を実行している? – Hucho