express的路由中使用mongoose查询
发布于 6 年前 作者 livetune 2090 次浏览 来自 问答

为什么在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的编码风格。

回到顶部