2016-10-08 4 views
0

最初の関数(findOne)が正常に機能しています。しかし、ここのコールバック内のすべてのMongoose関数はエラーなしでは機能しません。どうして? ありがとうございました!コールバックで関数を動作させないのはなぜですか?

var mongoose = require('mongoose'); 

var Links = require('../models/Links'); 

mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://localhost:27017/soft'); 

Links.findOne({}, function(err, l) { 
    if (err) throw err; 
    console.log("1", l); 
    Links.findOne({}, function(err, l_) { 
    if (err) throw err; 
    console.log("2", l_); 
    }); 
}); 

mongoose.connection.close(); 
+1

' mongoose.connection.close()。最後のコールバック内の接続を閉じます。 – Jecoms

答えて

2

2番目の.findが呼び出される前にコードが接続を終了しています。 .findが非同期であるため、コードは最初の呼び出し(実行する接続を持っています)を実行しますが、最初の呼び出しが戻って2番目の呼び出しを実行する前に接続を切断します。

2番目の呼び出しで.close呼び出しを移動すると、両方の呼び出しが可能になります。あなたが必要とする、それが戻る前に ``すぐLinks.findOne({}、機能(ERR、L){... `(最も可能性の高い後に実行される);

var Links = require('../models/Links'); 

mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://localhost:27017/soft'); 

Links.findOne({}, function(err, l) { 
    if (err) throw err; 
    console.log("1", l); 
    Links.findOne({}, function(err, l_) { 
    if (err) throw err; 
    console.log("2", l_); 
    mongoose.connection.close(); 
    }); 
}); 
関連する問題