Вызов экспресс-маршрута изнутри 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(...);
    // ..
}