我使用co和貓鼬,我希望我的異步代碼看起來更「同步」 - 據我所知 - co庫允許我使用來自一個在另一個方面承諾避免回調地獄。它似乎與mongoose保存(即使我做了多次保存)一起工作,但它對find()或findOne()等查詢返回的promise沒有任何作用。這是爲什麼?我能做些什麼來解決它?Mongoose不會產生findeOne結果co
Here'a一塊我的代碼:
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
如果你只是把'console.log(「found」);'?它是否達到了這一點?似乎很奇怪,你甚至不會看到'console.log'的輸出。 –
嘗試捕捉錯誤[像這裏](http://stackoverflow.com/a/32215520/1048572)。我很確定你有一個例外。 – Bergi
@ WillemD'Haeseleer,我是在yieling test_model.findOne()後做的,它沒有打印 - 它沒有達到那一點。 –