express的路由中使用mongoose查询
为什么在express的路由中进行mongoose的查询是可以同步处理,而在koa的路由中需要异步处理。。。 代码如下:
app.post("/user/register", function(req, res) {
const { user, pwd, type } = req.body;
User.findOne({ user }, function(e, doc) {
if (doc) {
return res.status(200).json({ code: 1, msg: "已存在该用户" });
}
const model = new User({ user, pwd, type });
model.save(function(error, doc) {
if (error || !doc) {
return res.status(500).json({ msg: "后端出错" });
}
const { user, type, _id } = doc;
// 保持登录状态7天
const token = jwt.sign({ id: _id }, key, {
expiresIn: 60 * 60 * 24 * 7
});
return res.status(200).json({ code: 0, token, data: { user, type, id: _id } });
});
});
});
2 回复
都是异步,你这里是基于回调的异步,koa中使用async函数以同步的方式书写异步代码,更优雅,避免了回调地狱
楼上说的对,都是异步的,只不过是不同的异步编码风格,express使用CPS风格(就是异步回调),而koa2是 promise,async/await的编码风格。