Вызов экспресс-маршрута изнутри NodeJS
у меня есть маршрутизация ExpressJS для моего API, и я хочу вызвать ее из NodeJS
var api = require('./routes/api')
app.use('/api', api);
и внутри ./маршрутов/API-интерфейса.js
var express = require('express');
var router = express.Router();
router.use('/update', require('./update'));
module.exports = router;
так что если я хочу назвать /api/update/something/:withParam
С моего переднего конца все его найти, но мне нужно вызвать это из другого аспекта моего скрипта NodeJS без необходимости переопределять всю функцию снова во 2-м месте
Я попытался использовать HTTP-модуль изнутри, но я просто получаю " ECONNREFUSED" ошибка
http.get('/api/update/something/:withParam', function(res) {
console.log("Got response: " + res.statusCode);
res.resume();
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Я понимаю, что идея Express заключается в создании маршрутов, но как я их внутренне называю
1 ответов
"обычным" или "правильным" способом справиться с этим было бы иметь функцию, которую вы хотите вызвать, разбитую сама по себе, отделенную от любых определений маршрута. Возможно, в своем собственном модуле, но не обязательно. Тогда звони, куда нужно. Вот так:
function updateSomething(thing) {
return myDb.save(thing);
}
// elsewhere:
router.put('/api/update/something/:withParam', function(req, res) {
updateSomething(req.params.withParam)
.then(function() { res.send(200, 'ok'); });
});
// another place:
function someOtherFunction() {
// other code...
updateSomething(...);
// ..
}