2014-02-05 6 views
0

Я пытаюсь использовать переменную template_subject как subject для отправки электронной почты.Невозможно установить & получить значение переменной в find()

Когда я извлекаю данные из mongodb с помощью findOne & задает переменную template_subject. Это просто дает мне значение undefined.

Я тестировал его со всех сторон, данные поступают отлично от заднего конца, только он не установлен на variable.

У кого-нибудь есть решение?

exports.sendMailMsg = function (templateName, email) { 

var nodemailer = require("nodemailer"); 

var template_subject; 
var template_html;  

Template.findOne({name: templateName}, function (err, template) {  
    template_subject = template.subject; 
    template_html = template.dataMsg; 
}); 

//----- Email Options -----// 
var mailOptions = { 
    from: "Xyz <[email protected]>", // sender address 
    to: email, // list of receivers 
    subject: template_subject, // Subject line 
    html: "<b>Hello,</b><br/><br/> You are successfuly Registered" 
}; 

ответ

2

Это потому, что функция findOne является асинхронной, так что к тому времени, когда результат извлекается, переменная mailOptions уже определен. Итак, возможно, вы могли бы это сделать:

exports.sendMailMsg = function (templateName, email) { 

var nodemailer = require("nodemailer"); 

var template_subject; 
var template_html;  

Template.findOne({name: templateName}, function (err, template) {  
    template_subject = template.subject; 
    template_html = template.dataMsg; 

    //----- Email Options -----// 
    var mailOptions = { 
     from: "Xyz <[email protected]>", // sender address 
     to: email, // list of receivers 
     subject: template_subject, // Subject line 
     html: "<b>Hello,</b><br/><br/> You are successfuly Registered" 
    }; 

    //Do all the processing here... 
}); 
+0

Работает отлично ... спасибо – Anup

Смежные вопросы