Mongoose findOne возвращает документ как ошибку? - PullRequest
0 голосов
/ 30 апреля 2019

В конце моего ума. Не могу понять, почему это происходит.

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, он выводит правильный документ, который был найден. Я не могу понять, почему это происходит. Можно ли найти лучшее сообщение об ошибке?

Я подумал, что, может быть, что-то конфликтует с моей схемой, но я построчно просматривал данные, но ничего не получалось.

EDIT:

Так странно ... Я изменил структуру своего кода следующим образом:

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

Это работает ... Почему?

1 Ответ

0 голосов
/ 30 апреля 2019

Обратные вызовы Mongoose предоставляют ошибку в качестве первого аргумента и результат в качестве второго аргумента.

При использовании обещаний ошибки обрабатываются в обработчике перехвата, как описано выше, и результат распространяется каскадно через затем обработчики.

Посмотрите на:

...