0
我想從我的Koa 2中間件中獲取var值以顯示在我的pug模板(或其他)中。 例如,在KOA的會話我:從中間件傳遞值在Koa中查看2
app.use(ctx => {
// ignore favicon
if (ctx.path === '/favicon.ico') return;
let n = ctx.session.views || 0;
ctx.session.views = ++n; // how can I use this?
ctx.body = n + ' views'; // works, but in body directly
ctx.state.views = n + ' views'; // not working
});
再比如,隨着響應時間:
app.use(async (ctx, next) => {
const start = Date.now();
ctx.state.start = start
await next();
const ms = Date.now() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); // this shows response
ctx.state.ms = await ms>0 // I have no idea what I'm doing :)
});
按原始指令這部作品
,但不是用肢體/控制檯,我想用它作爲模板變量,所以在我的路由器/控制器我會:
...
return ctx.render("posts/index", {
title: 'Posts',
posts: posts,
ms: ctx.state.ms,
views: ctx.session.views // or views: ctx.state.views
});
這一切都不工作。它與異步/等待有關,所以它沒有及時獲得價值,或者它是一些語法問題?請保持溫柔,因爲我是新手。 :)
謝謝,雖然我的console.log輸出似乎比這裏傳遞的結果有所不同。好吧,我想這已經足夠:) – Encho
在我的答案中沒有console.log或者你是什麼意思?你期望看到什麼,你的console.log的實際輸出是什麼? –
對不起,我不清楚 - 我正在使用你的答案,並根據問題中的第二個示例轉換我的頁面速度加載var的代碼。 console.log('$ {ctx.method} $ {ctx.url} - $ {ms} ms');產生與我在頁面上輸出的結果不同的結果。 – Encho