当数据不存在时,mongoose findOne卡住了

时间:2018-05-18 10:20:31

标签: node.js mongodb mongoose mongoose-schema

描述

我根据猫鼬文档使用Model.findOne().exec(),我的mongodb中有{ username: ycjcl666 },当我findOne({ username: 'ycjcl666' })时,它可以显示数据,但我查询不存在的数据,如{{ 1}},应用程序停滞不前。

应用

使用findOne({ username: 'ycjcl888' })创建登录/注册申请。

控制器代码:

koa@2 + mongoose@^5.0.18 + mongodb@3.6.3
像这样的服务代码,但是当它不存在时就会卡住,// controller/user.js class UserController { async login(ctx) { const password = await UserService.loginPass(username); } } 但不会获得try...catch信息

console

截图

enter image description here

1 个答案:

答案 0 :(得分:0)

您在await中使用await UserService.loginPass(username);表示loginPass必须返回Promise,我的意思是您不必在{{1}中使用await功能

loginPass

class UserService {
  loginPass() {
    return User.findOne({ username }).exec();
  }
 }

class UserController {
  async login(ctx) { 
    const password = await UserService.loginPass(username);
  }
}

并确保您没有使用class UserService { async loginPass() { return await User.findOne({ username }).exec(); } } class UserController { login(ctx) { const password = UserService.loginPass(username); } } 来调用async/await(如果明确调用)