我正在使用 co 和 mongoose,我希望我的异步代码看起来更“同步”,并且 - 据我所知 - co 库允许我在另一个中使用来自一个产生的承诺的数据,以避免回调地狱。它似乎适用于 mongoose save(即使我进行了多次保存),但它对从 find() 或 findOne() 等查询返回的 Promise 没有任何作用。这是为什么?我能做些什么来修复它?
这是我的一段代码:
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