私は co と mongoose を使用していますが、非同期コードをもう少し「同期的に」見たいと思っています。私が読んだ限りでは、co ライブラリを使用すると、あるプロミスのデータを別のプロミスで使用して、コールバック地獄を回避できます。マングースの保存では機能するようですが (複数の保存を行っても)、find() や findOne() などのクエリから返されたプロミスでは何もしません。何故ですか?修正するにはどうすればよいですか?
ここに私のコードの一部があります:
co(function *() {
let unhashedPassword = Math.random().toString(36);
let passed = {
username: 'T1',
password: bcrypt.hashSync(unhashedPassword)
};
let saved = yield new test_model(passed).save();
console.log("saved: " + saved);
let found = yield test_model.findOne({username: saved.username}).exec();
console.log("found" + found);
});
そして出力:
saved: { _id: 57606dcf0f2378d41c355acd,
password: '...',
username: 'T1',
__v: 0 }
Process finished with exit code 0