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");*/
})
请问是为什么?以及解决方法。谢谢你们啦~~
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){
}