Mongodb-native (la libreria client che stai utilizzando) non genererà un errore se la tua ricerca non ha restituito alcun documento. Gli errori sono riservati a problemi di connettività o sintassi.
Quindi devi testare l'esistenza della variabile prima di usarla, qualcosa come:
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;