koa2 ctx.render无法在函数中呈现

时间:2017-06-06 09:30:51

标签: koa2

我想将文档呈现到列表页面,但在浏览器中找不到列表页面。

这是代码:

router.get('/', function(ctx){
    let type = getURLParm(ctx.url).type;
    var article = {};
    var content = {};
    mongoService.find('col', { type: type, id: { $gte: 0 } },
     function(docs) {
       ctx.render('list',{data:docs});
    });        
});

1 个答案:

答案 0 :(得分:0)

Koa(与Express不同)不等待任何回调,因此,如果函数结束,并且响应正文为空,则请求将返回Not Found。

要做到这一点,你必须宣传你的mongoService.find函数,将中间件编写为异步函数,然后等待mongoService.find

Koa2代码:

router.get('/', async function(ctx){
  let type = getURLParm(ctx.url).type;
  var article = {};
  var content = {};
  let docs = await mongoService.find('col', { type: type, id: { $gte: 0 } })
  ctx.render('list',{data:docs});       
});

一个建议:使用库来解析请求数据,例如koa-body