如果我有这个来显示用户模型的索引:
app.use(route.get('/user', list));
function *list() {
var res = yield users.find({});
this.body = res;
};
是否可以将数据库访问部分放入其自己的中间件中,然后调用next?
如何将生成的用户列表传递给下一个中间件?然后以某种方式通过路线?
所以第一个中间件是需要的任何数据库访问,第二个中间件是演示吗?
答案 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);