0

我是 Nodejs 的新手。我正在使用 Nodejs - express 解决方案(作为 angularjs web 的 web 服务)。当 MSSSQL 数据库查询返回一些信息时,我想发送电子邮件。这对我来说效果很好。问题是这个函数应该在 app.js 中调用(当 nodejs 服务器启动时),因为这个函数不应该响应任何前端/web 调用。

功能:

exports.sendMailBuy = function(req, res) {
//do stuff
}

app.js

var silkcartCtrl = require('./controllers/silkcart.controller');

我需要连接数据库,所以我尝试在同一个函数数据库连接中调用函数(我正在使用 Tedious):

dbsqlservertoken.connect().then(function(err, req, res) {
   console.log('Connection pool open for sql server');
   silkcartCtrl.sendMailBuy(req, res);
}).catch(function(err) {
  console.error('Error creating connection pool', err);
});

通过这个调用,我到达了控制器中的函数,但是reqresvars 是空的,所以无法完成连接。

任何帮助将不胜感激。

提前致谢。

4

2 回答 2

0

返回 Promise 时使用该.then()方法。我不熟悉您正在使用的库,但您的代码表明它connect()返回了一个 Promise。

有关更多信息,请参阅承诺

特别是,传递给的函数.then()接受一个参数,该参数是由 Promise 解析的结果。在您的代码中,erris 被分配结果 whilereqresareundefined因为该函数仅接收一个参数。

于 2017-01-21T10:56:30.457 回答
0

req, res 不会从连接回调函数返回,它们只能使用 api 请求访问,例如 app.post('/any route' , function(req, res))

如果您需要 req 对象来发送电子邮件,您可以使用 node_mailer 模块,因为使用 node_mailer 您可以在没有 req 对象的情况下发送电子邮件

于 2017-01-21T11:25:33.500 回答