0
내 Koug 2 미들웨어에서 var 값을 가져 와서 내 pug 템플릿 (또는 기타)에 표시하려고합니다.미들웨어에서 Koa보기로 값 전달
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 :)
});
으로이 작품 원래의 명령어 당, 대신에 몸/콘솔을 사용하여, 나는 싶습니다 : 응답 시간,
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
});
또 다른 예 : 은 KOA-세션의 예를 들어 내가 가진 템플릿 변수로 사용하십시오. 따라서 라우터/컨트롤러에서 다음과 같이 나타납니다.
...
return ctx.render("posts/index", {
title: 'Posts',
posts: posts,
ms: ctx.state.ms,
views: ctx.session.views // or views: ctx.state.views
});
이 모두는 작동하지 않습니다. 그것은 async/await와 관련이 있습니까? 그렇기 때문에 시간에 값을 얻지 못하거나 구문적인 문제가 있습니까? 나는 이것에서 새롭기 때문에 온유 해주십시오. :)
감사를보십시오. 글쎄, 난 충분히 좋은 것 같아 :) – Encho
거기에 내 대답은 console.log :) 또는 무슨 뜻이야? 예상 한 결과와 console.log의 실제 출력은 무엇입니까? –
죄송합니다. 충분히 분명한 것은 아닙니다. 귀하의 답변을 사용하고 질문에서 두 번째 예와 같이 내 페이지 속도 var에 대한 코드를 변환했습니다. console.log ('$ {ctx.method} $ {ctx.url} - $ {ms} ms'); 내가 페이지에 출력 한 결과와 다른 결과를 생성합니다. – Encho