egg中怎么在控制器中获取mongoose save回调中的结果 - CNode技术社区

egg中怎么在控制器中获取mongoose save回调中的结果
发布于 7 年前 作者 Magic-zhu 3658 次浏览 来自 问答
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 回复

save方法也可以返回Promise的 image.png

@jiangli373 具体我的代码怎么修改呢 即使。then了 外面 并不会等待我的返回结果 而是同步执行下去

@Magic-zhu

	data.save(function(err){
 if(!err){
 return "注册成功"
 }
 });
 return "注册成功"
修改为
	await data.save(); 
	return "注册成功"

@jiangli373 。。这样我不知道我的save 过程有没有错误发生啊 这样写和直接return 没有任何区别

@Magic-zhu

错误了就会执行后面的return了,会抛出异常了

或者可以

 try {
	await data.save(); 
	return "注册成功"
	}catch(error) {
	 return "注册失败"
	}
	

@jiangli373 try catch的好像可以 谢了(^-^)

回到顶部

AltStyle によって変換されたページ (->オリジナル) /