Mongodb-native (la biblioteca cliente que está utilizando) no generará un error si su búsqueda no devolvió ningún documento. Los errores están reservados para problemas de conectividad o sintaxis.
Por lo tanto, debe probar la existencia de la variable antes de usarla, algo como:
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;