2014-02-17 2 views
0

Я получаю данные из коллекции шаблонов от mongodb. поэтому моя проблема в том, что я даю неправильный templateName, программа должна поймать ошибку. Но это не так. программа идет дальше & i get error TypeError: Cannot read property 'subject' of null.ТипError: Невозможно прочитать свойство «субъект» нулевого

Как справиться с этой штукой?

Template.findOne({ name: templateName }, function (err, template) { 
     if (err) { 
      console.log('Error occured'); 
      console.log(err.message); 
      callback(err); 
     } 
     else { 
      template_subject = template.subject; 
      template_html = template.dataMsg; 
     }); 

Если задано неправильное имя шаблона, я хочу вернуть ошибку в функцию обратного вызова.

+0

Вы можете проверить перед линией №: 8 – Mahavir

ответ

1

Mongodb-native (клиентская библиотека, которую вы используете) не приведет к возникновению ошибки, если ваша находка не вернула документ. Ошибки зарезервированы для проблем с подключением или синтаксисом. не

Поэтому вы должны проверить переменную существование, прежде чем использовать его, что-то вроде:

Template.findOne({ name: templateName }, function (err, template) { 
    if (err === null && template == null) { 
     // no error, but no result found 
     err = new Error(templateName + ' not found'); 
    } 

    if (err) { 
     console.log('Error occured'); 
     console.log(err.message); 
     // early return to avoid another indentation :) 
     return callback(err); 
    } 
    template_subject = template.subject; 
    template_html = template.dataMsg; 
0

Вы можете проверить перед строкой нет: 8. As субъект показывает null.

if(template.subject && template.dataMsg){ 
    // ok 
} else { 
    // wrong templateName 
} 
Смежные вопросы