[英]how to convert this Callback Authentication to Promise in nodejs mongoose
[英]Convert a method into a promise : Nodejs
我有以下要调用的Nodejs方法,并在其上执行.then
函数。 我不确定如何编写此方法,以便可以在其上使用.then()
方法。
我想在app.js
调用nodemailer.js
中的sendEmail
方法, nodemailer.js
执行.then()
方法。 当前它给我错误:
nodeMailer.sendEmail()。then(函数...
TypeError:无法读取未定义的属性“ then”。
我了解这是因为我的方法未返回承诺。 我不确定如何编写此方法以返回诺言,同时保留其原始功能。
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport('smtps://********');
var mytext="my new text";
var mailOptions ={
from: '"Reviews"<Reviews@reviews.com>', // sender address
to: 'Someone@something.com', // list of receivers
subject: 'Test', // Subject line
text: '', // plaintext body
}
module.exports = {
mailOptions:mailOptions,
sendEmail: function() {
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
console.log(error);
} else {
console.log('Message sent: ' + info.response);
}
})
}
}
在app.js
调用上述内容会产生上述错误
var nodeMailer = require('./nodeMailer')
var cron = require('cron');
var cronJob1 = cron.job("*/30 * * * * *", function(){
Model.find(query,function (err, results) {
if (err) {
res.status(500).json({ message: 'Something Broke!' });
} else {
nodeMailer.mailOptions.text = JSON.stringify(results);
nodeMailer.sendEmail().then(function(){
Model.findAndUpdate(query, { $set: { "email": true }},
function(err, resp){
console.log(resp, "successfully updated")
})
});
}
});
});
cronJob1.start();
根据nodemailer文档 ,如果您在sendMail
调用中省略了回调,它将返回Promise
。 因此,只需返回即可。
sendEmail: function() {
return transporter.sendMail(mailOptions)
.then(
function(info) {
console.log('Message sent: ' + info.response);
},
function(error){
console.log(error);
}
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.