koa返回404 NOT FOUND

使用koa router时,对某一接口获取数据,log打印时有实际数据,说明查询到了数据库内容,但koa的返回时404,这是koa的ctx没有进行操作时的默认返回。
最后发现这是koa的async和await特性造成的,似乎所有的中间件的异步操作都要写成async和await的样式加入到koa中。比如我的程序中的授权验证中间件需要在 next()之前加await,然后程序就运行正常了

// 中间件:验证授权
const auth = async (ctx, next) => {
    // 获取客户端请求头的token
    const rawToken = String(ctx.headers.authorization).split(' ').pop()

    try {
        const tokenData = await jwt.verify(rawToken, SECRET)
        // 获取用户id
        const id = tokenData.id;
        ctx.user = await User.findById(id)
        await next()
    } catch {
        ctx.status = 401
        ctx.body = ({message: "用户未登录"})
    }
}

你可能感兴趣的:(koa,node.js,后端)