2012-01-30 2 views
1

Я играю с электронной почтой из nodeJS (используя библиотеку nodemailer), и в настоящее время я нахожу несколько тайм-аутов во всем процессе рассылки. Это не проблема, с которой мне нужна помощь. Проблема, в которой я действительно нуждаюсь, заключается в том, что успех будет равен нулю, когда он попадет на часть ведения журнала, а sole.log («Message» +, что делает всю инструкцию console.log для вывода «отправлено». Нет «Message», не удалось .?успех? 'sent': 'failed' по умолчанию 'sent' for success = null. Зачем?

Любая идея, почему

nodemailer.send_mail(
       // e-mail options 
       { 
        to:"[email protected]", 
        sender:"[email protected]", 
        subject:"node_mailer test email", 
        html:'<p><b>Hi,</b> how are you doing?</p>', 
        body:'Hi, how are you doing?' 
       }, 
       // callback function 
       function(error, success){ 
        console.log('Message ' + success ? 'sent' : 'failed'); 
       } 
      ); 
+1

Я думаю, что его проверка, если '' Message '+ success' равно null, которого оно никогда не было, поэтому его всегда верно. – Ivan

ответ

4

старшинство оператора Попробуйте:

'Message ' + (success ? 'sent' : 'failed') 
2

Это ваш приоритет операций + оператор имеет более высокий приоритет, чем оператор троичного, и как таковой, вы. действительно делает

console.log(('Message ' + success) ? 'sent' : 'failed'); 

Это всегда так. Вместо этого сделайте:

console.log('Message ' + (success ? 'sent' : 'failed'));