KoaJS 中间件和数据库访问

KoaJS middleware and database access

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

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

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

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

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

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

本质上,您将信息附加到请求上下文或中间件中的 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);