import { Controller} from 'egg';
export default class Login extends Controller{
public async login(){
const {ctx}=this;
ctx.body= await ctx.service.login.login("admin","admin");
};
public async register(){
const {ctx}=this;
let {username,password}=ctx.query;
console.log(username);
ctx.body= await ctx.service.register.register(username,password);
};
}
public async register(name: String, psw: String) {
mongoose.connect('mongodb://localhost/egg');
let loginData = mongoose.Schema({
username: String,
password: String
})
let loginModel = mongoose.model('loginModel', loginData);
var data = new loginModel({ username: name, password: psw });
data.save(function(err){
if(!err){
return "注册成功"
}
});
return "注册成功"
}
egg中使用原生mongoose而不是用egg-monogoose 怎么让Controller能够获取到服务中异步的save回调return的结果呢
回复 (6)
J
save方法也可以返回Promise的
M
引用 jiangli373save方法也可以返回Promise的
@jiangli373 具体我的代码怎么修改呢 即使。then了 外面 并不会等待我的返回结果 而是同步执行下去
J
引用 Magic-zhu@jiangli373 具体我的代码怎么修改呢 即使。then了 外面 并不会等待我的返回结果 而是同步执行下去
@Magic-zhu
data.save(function(err){
if(!err){
return "注册成功"
}
});
return "注册成功"
修改为
await data.save();
return "注册成功"
M
引用 jiangli373@Magic zhu
@jiangli373 。。这样我不知道我的save 过程有没有错误发生啊 这样写和直接return 没有任何区别
J
引用 Magic-zhu@jiangli373 。。这样我不知道我的save 过程有没有错误发生啊 这样写和直接return 没有任何区别
@Magic-zhu
错误了就会执行后面的return了,会抛出异常了
或者可以
try {
await data.save();
return "注册成功"
}catch(error) {
return "注册失败"
}
M
引用 jiangli373@Magic zhu 错误了就会执行后面的return了,会抛出异常了 或者可以
@jiangli373 try catch的好像可以 谢了(^-^)
参与回复
登录后即可参与回复。登录