The goal is to have routes like this - /names/A
for every letter all the way through Z. Instead of having 26 html pages for each letter, I want to have one dynamic html page that will show the information for the letter in the url. I am attempting to do this with koa
, koa-route
, and koa-session2
.
Here is my attempt, and it's giving the error Cannot set property 'levelOneLetter' of undefined
which means ctx.session is undefined in names.levelOne.
var Koa = require("koa");
var route = require("koa-route");
var session = require("koa-session2");
var routes = require("./routes/routes.js");
// dynamic routes
const names = {
levelOne: (ctx, letter) => {
ctx.session.levelOneLetter = letter;
console.log('letter', letter);
app.use(route.get('/names/' + letter, routes.levelOne));
}
};
app.use(route.get('/names/:letter', names.levelOne));
//in routes
module.exports.levelOne = function *() {
this.status = 200;
this.state.levelOneLetter = ctx.session.levelOneLetter;
this.body = yield renderView("names", "level-one", this.state);
};