素材牛VIP会员
koa处理xhr请求,服务端能接受并顺利处理,但chorme显示xhr.status=404,浏览器无法接收response
 隔***王  分类:JavaScript  人气:831  回帖:2  发布于6年前 收藏

xhr请求,koa处理,服务端能接受并顺利处理,但无法返回response,xhr.status=404,但将路由里的代码从向MongoDB获取数据 换成 简单的赋值返回,则一切正常,xhr.status=200.如下图,如果换成注释内的代码,则正常执行

route.post('/login',async function(ctx,next){

var userauth=function () {
     userModel.find({name: ctx.request.body.username}, function (err, user) {
        if (err) {
            throw err;
        }
        if (user.length == 0) {
            console.log(typeof(user));
            console.log(user.length == 0);
            console.log('user not register');
            return "user not register";
        }

        else {
            userModel.find({
                name: ctx.request.body.username,
                password: ctx.request.body.password
            }, function (err, user) {
                console.log(ctx.request.body.username);
                console.log(ctx.request.body.password);
                console.log(user);
                if (err) {
                    throw err;
                }
                console.log("user:" + user)
                if (user == null || user.length == 0) {
                    console.log(user);
                    console.log('password wrong');
                    ctx.response.body = "login fail";
                    return "login fail";
                }
                if (user != null && user.length > 0) {
                    console.log('login sccessful');
                    ctx.response.body = "login successful";
                    return "login successful";
                }
            })
        }

    })
}
var response=await userath();
return response;

/*var initial={ username:"suki",password:'123456'};
console.log(ctx.request.body);
console.log(ctx.request.body.username);
console.log(ctx.request.body.password);
if(ctx.request.body.username==initial.username){
    console.log("登录成功");
    ctx.response.body="login successful";
    //return response;
}
else {
    console.log("登录失败");
    ctx.response.body="login fail";
}
console.log("post login end");*/

})

请问是为什么?以及解决方法。谢谢你们啦~~

 标签:javascript

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv2 入门
一***句 职业无 6年前#1

没有执行next(),不是很熟悉koa

Lv3 码奴
te***es 产品经理 6年前#2

userath()这个函数是没有返回值的
响应的话 ctx.body=response

mongoose支持promise,配合await使用

try{
    var user = awiat userModel.find({name: ctx.request.body.username});
    if(user.length == 0){
        ctx.body = "user not register"
    } else {
        let user = await userModel.find({
            name: ctx.request.body.username,
            password: ctx.request.body.password
            });
        if (user == null || user.length == 0) {
            console.log(user);
            console.log('password wrong');
            ctx.body = "login fail";
         
        }
        if (user != null && user.length > 0) {
            console.log('login sccessful');
            ctx.body = "login successful";
        }
    }
} catch(e){
}


 文明上网,理性发言!   😉 阿里云幸运券,戳我领取