【问题标题】:KoaJS middleware and database accessKoaJS 中间件和数据库访问
【发布时间】:2015-05-15 13:41:40
【问题描述】:

如果我有这个来显示用户模型的索引:

app.use(route.get('/user', list));

function *list() {
  var res = yield users.find({});
  this.body = res;
};

是否可以将数据库访问部分放到自己的中间件中,然后调用next?

如何将生成的用户列表传递给下一个中间件?然后以某种方式通过路线?

所以第一个中间件是需要任何数据库访问,而第二个中间件是表示?

【问题讨论】:

    标签: node.js koa


    【解决方案1】:

    本质上,您将信息附加到请求上下文或中间件中的 this 关键字。

    我创建了一个关于编写中间件的截屏视频,可能会有所帮助:

    http://knowthen.com/episode-4-writing-middleware-in-koajs/

    这是一个如何将信息传递给下游中间件的示例。

    let koa   = require('koa'),
        users = require('./users'),
        app   = koa();
    
    function *firstMiddleWare (next) {
      this.session = {
        user: yield users.find({});
      }
      yield next;
    }
    
    function *secondMiddleware (next) {
      // this.session.user is available here
      yield next;
    }
    
    app.use(firstMiddleWare);
    app.use(secondMiddleware);
    
    app.use(function *(){
      // this.session.user is available here as well
      this.body = this.session.user;
    });
    
    app.listen(3000);
    

    【讨论】:

    • 谢谢!很棒的教程:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多