我正从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,我想将错误返回给回调函数。
答案 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
}