KoaJS中间件和数据库访问

时间:2015-05-15 13:41:40

标签: node.js koa

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

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

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

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

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

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

1 个答案:

答案 0 :(得分: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);