2012-04-04 2 views
0

Я использую expressjs и mongoskin для подключения к базе данных, и у меня возникают проблемы при метании ошибки expressjs внутри моего вызова mongskin. Я не могу швы, чтобы проследить проблему, поскольку ошибка настолько обычна.Что может вызвать эту ошибку в Expressjs?

Мой код:

db.collection('users').find(data, {limit:1}).toArray(function(err, result) { 
    if(result) throw new noData('No results found');   
});  

Ошибка:

node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error 
    at /home/jmoney/workspace/blog/app.js:238:15 
    at /home/jmoney/workspace/blog/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:129:9 
    at /home/jmoney/workspace/blog/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:171:11 
    at /home/jmoney/workspace/blog/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:452:35 
    at Cursor.close (/home/jmoney/workspace/blog/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:660:5) 
    at Cursor.nextObject (/home/jmoney/workspace/blog/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:452:17) 
    at [object Object].<anonymous> (/home/jmoney/workspace/blog/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:440:12) 
    at [object Object].g (events.js:156:14) 
    at [object Object].emit (events.js:88:20) 
    at Db._callHandler (/home/jmoney/workspace/blog/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/db.js:1274:25) 

Любые идеи о том, почему это может быть нарушение? или как получить более подробную информацию об ошибках? Спасибо, ребята!

+1

попробуйте включить фактическое сообщение об ошибке. Сообщение об ошибке, вероятно, «Нет результатов» – Raynos

+0

Вы используете 'result' в своей сигнатуре функции и' results' (_plural_) в инструкции if. – cordsen

+0

@Raynos, это вся информация, которую я получаю от узла. Когда я бросаю ошибку, как-то она вызывает ошибку. cordsen спасибо за то, что заметили опечатку, обновленную сейчас, туманную, когда я печатал пример. – Justin

ответ

0

Никогда не бросайте вызов функции node.js, если вы не знаете, что делаете. Нет никакого «стека» для броска, чтобы развернуть, как это происходит внутри toArray. Это приводит к тому, что исключение становится необработанным исключением.

Единственный способ ловушки, использующий

http://nodejs.org/api/process.html#process_event_uncaughtexception

войти его вам LOGFILE или или использовать console.log()/реж() или что-то подобное.

Смежные вопросы