2017-02-04 21 views
1
export async function getPlaces(ctx, next) { 
    const { error, data } = await PlaceModel.getPlaces(ctx.query); 
    console.log(error, data); 
    if (error) { 
     return ctx.throw(422, error); 
    } 
    ctx.body = data; 
} 

Koa каждый раз отправляет статус 404 и пустые тела, что я делаю неправильно?Koa отправить статус 404 каждый раз

+0

404 обычно означает, что Koa не может найти маршрут, соответствующий URL-адресу, вы уверены, что указанная выше функция называется? –

+0

Да, я уверен, console.log works –

+0

Пробовал ли вы 'try/catch' вокруг вызова ожидания? – zeronone

ответ

1

В кажется, что await на самом деле не «ждать», и поэтому возвращается слишком рано (это приводит к ошибке 404).

Одна из причин этого может заключаться в том, что ваш PlaceModel.getPlaces(ctx.query) не возвращает обещание. Таким образом, он продолжается, не дожидаясь результатов от getPlaces.

0

Вы должны подключить свою функцию к маршрутизатору. Вот небольшой пример того, как это работает:

import * as Koa from "koa"; 
import * as Router from "koa-router"; 

let app = new Koa(); 
let router = new Router(); 

async function ping(ctx) { 
    ctx.body = "pong"; 
    ctx.status = 200; 
} 

router.get("/ping", ping); 

app.use(router.routes()); 
app.listen(8080);