猫鼬findOne返回文档作为错误?

时间:2019-04-30 00:27:18

标签: javascript express mongoose

尽我的智慧。似乎无法弄清楚为什么会这样。

Trade.findOne( { ticker } ).then( ( err, doc ) => {
  if ( err ) {
    console.log( 'THERE IS AN ERROR:', '\n', err )
  } else {
    console.log( 'no error' )
    if ( doc ) {
      console.log( 'doc', doc )
    } else {
      console.log( 'no doc' )
    }
  }
} )

此代码段运行时,将进入错误情况,并记录控制台日志THERE IS AN ERROR,而当我注销err时,它将注销找到的正确文档。我似乎无法弄清楚为什么会这样。是否有更好的错误消息?

我以为可能有些东西与我的Schema冲突,但是我逐行浏览了数据,却一无所获。

编辑:

太奇怪了...我将代码的结构更改为:

Trade.findOne( { ticker } ).then( doc => {
  if ( doc ) {
    console.log( 'doc', doc )
  } else {
    console.log( 'no doc' )
  }
} ).catch( err => {
  console.log( 'err', err )
} )

这行得通...为什么?

1 个答案:

答案 0 :(得分:0)

猫鼬的回调将错误作为第一个参数,并将结果作为第二个参数。

使用promise时,错误会像上面一样被捕获到catch处理程序中-结果级联到然后的处理程序中。

看看: