TypeError:无法读取null的属性'subject'

时间:2014-02-17 09:22:53

标签: javascript node.js mongodb angularjs

我正从mongodb检索模板集合的数据。所以我的问题是,当我提出错误templateName时,该程序应该会发现错误。但它没有这样做。程序更进一步我收到错误TypeError: Cannot read property 'subject' of null

如何处理这件事?

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;
        });

如果给出了错误的templateName,我想将错误返回给回调函数。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您可以在第8行前检查。 由于主题显示为空。

if(template.subject && template.dataMsg){
    // ok
} else {
    // wrong templateName
}