2017-01-21 6 views
0

Я немного новичок с Nodejs. Я работаю над решением Nodejs-express (как веб-сервис сети angularjs). Я хочу отправить и отправить по электронной почте, когда запрос базы данных MSSSQL возвращает некоторую информацию. Это хорошо работает для меня. Проблема в том, что эта функция должна быть вызвана в app.js (когда запускается сервер nodejs), потому что функция не должна отвечать на любой интерфейс/веб-вызов.Как вызвать функцию при запуске в Node-Express, с dbconnection

Функция:

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

В app.js

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

Мне нужно, чтобы соединиться с базой данных, поэтому я пытался вызвать funciont в связи с той же функцией дб (I использую утомительно):

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); 
}); 

с помощью этого вызова я достигаю функцию в контроллере, но req и res, пустые поля, поэтому соединение невозможно.

Любая помощь будет оценена.

Заранее спасибо.

ответ

0

Метод .then() используется, когда возвращается Promise. Я не знаком с библиотеками, которые вы используете, но ваш код указывает, что connect() возвращает обещание.

Для получения дополнительной информации см. Promises.

В частности, функция, переданная в .then(), принимает один аргумент, который является результатом, разрешенным обещанием. В вашем коде err присваивается результат, а req и res - undefined, потому что функция получает только один аргумент.

+0

мне нужно подключитесь к базе данных, поэтому мне нужно передать req и res, где установлено соединение db. – user1432966

0

req, res не возвращаются из функции обратного вызова соединения, они обрабатываются только с помощью запросов api, например. app.post («/ любой маршрут», функция (Req, Рез))

Вы можете использовать node_mailer модуль, если вам нужен REQ объект для отправки электронной почты, потому что с node_mailer вы можете отправить электронную почту без объекта REQ

+0

Спасибо Асиф. Мне нужно подключиться к базе данных, поэтому мне нужно передать req и res, где установлено соединение db. – user1432966