CNode

Koa2 + koa-router 二次响应的问题。

问答
9995270418L发布于9 年前最后回复9 年前5 回复8422 浏览0 收藏

使用Koa2+koa-router, router.post('/signin',async(ctx,next) => { let body= ctx.request.body; let name = body.name,password = body.password; //使用mongolass验证密码操作 userModel.getUserByName(user).then({ //这里进行后续操作 if(!user){ //省略处理代码 return ctx.redirect('/signin'); } //登录成功 //bala bala ctx.redirect('/index'); }).catch(e => console.log(e.message)); }

gooooooole了好久,觉得是二次回调函数的问题,菜鸟,不知道怎么解决。

查看回复

回复 (5)

Z
zhhb#1·9 年前

router.post(’/signin’,async (ctx,next) => { let body= ctx.request.body; let name = body.name,password = body.password; //使用mongolass验证密码操作 let user = await userModel.getUserByName(name,password); //这里进行后续操作 if(!user){ //省略处理代码 return ctx.redirect(’/signin’); } //登录成功 //bala bala ctx.redirect(’/index’); } 你只贴了代码,不知道你想问什么

9
995270418L#2·9 年前
引用 zhhbrouter.post(’/signin’,async (ctx,next) = { let body= ctx.request.body; let name = body.name,pass...

@zhhb 当登录成功(失败)后会报错(404 not found),Can't set headers after they are sent.(二次响应)。请教一下怎么解决。

9
995270418L#4·9 年前
引用 zhhbrouter.post(’/signin’,async (ctx,next) = { let body= ctx.request.body; let name = body.name,pass...

@zhhb 已经解决了,使用async函数不能再使用 next,需要同步更换成await函数表达.

I
i5ting#5·9 年前
引用 995270418L@zhhb 已经解决了,使用async函数不能再使用 next,需要同步更换成await函数表达.

@995270418L next其实返回的是promise,所以可以await next()的,看你怎么样

参与回复
登录后即可参与回复。登录