Узел - Koa Dynami c Маршрут на основе url - PullRequest
0 голосов
/ 19 июня 2020

Цель состоит в том, чтобы иметь такие маршруты - /names/A для каждой буквы на всем протяжении Z. Вместо 26 html страниц для каждой буквы я хочу иметь одну динамическую c html страницу, которая отобразит информацию о письме в URL-адресе. Я пытаюсь сделать это с помощью koa, koa-route и koa-session2.

Вот моя попытка, и она дает ошибку Cannot set property 'levelOneLetter' of undefined, что означает, что ctx.session не определен в 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);
};

1 Ответ

0 голосов
/ 20 июня 2020

Из предоставленного вами примера кода я вижу, что вы не применили промежуточное ПО koa-session2 к приложению Koa . Вот почему ctx.session не определено.

app.use(session())
...