Koa Router v4.2 does not support an array of middleware, multiple middleware must be entered one by one:
1
| app.get('/foo', middleware1, middleware2);
|
Using an array is much cleaner than multiple arguments.
1
| app.get('/foo', [middleware1, middleware2]);
|
But the above will throw error:
1
| Error: GET: `middleware` must be a function, not `object`
|
This can be easily fixed by using Koa Compose:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var app = require('koa')(); var router = require('koa-router'); var compose = require('koa-compose'); app.use(router(app)); app.get('/foo', compose([ function *(next) { this.body = {}; yield next; }, function *(next) { this.body.foo = 'foo'; yield next; }, function *(next) { this.body.bar = 'bar'; yield next; } ]));
|
Hence:
1
| app.get('/foo', compose([middleware1, middleware2]));
|