Здесь происходит несколько вещей. Для следующего кода:
var users = require('./routes/users');
var candidates = require('./routes/users');
То, что вы называете эти разные переменные, не означает, что при объявлении маршрутов через:
app.use('/api/parties', users);
app.use('/api/candidates', candidates);
произойдет любое волшебство c * Обе конечные точки укажите на тот же файл и будет соответствовать первому маршруту, с которым они сталкиваются. В вашем файле users. js вы определяете два своих маршрута одинаковым образом:
router.get('/', function(req, res, next) {
// ...
router.get('/', function(req, res, next) {
Поэтому, когда вы посещаете /api/parties
или /api/candidates
, они всегда будут ударил ваш первый маршрут из этого файла. По сути, у вас есть два варианта:
- Создание двух отдельных файлов маршрутизации
- Изменение способа объявления ваших маршрутов
Для метода 1 единственное, что у вас есть для этого переместите код кандидатов из пользователей. js в новый файл, скажем кандидатов. js и измените это определение:
var candidates = require('./routes/candidates');
Для метода 2 вы можете сохранить их в одном файле, но вам придется изменить базовый маршрут в приложении. js на:
app.use('/api', users);
Затем в пользователях. js вы бы объявили маршруты следующим образом:
router.get('/parties', function(req, res) {
// ...
router.get('/candidates', function(req, res) {
Также вы хотите изменить действительные функции маршрута на function(req, res)
вместо function(req, res, next)
. Вы также можете res.json
сократить свой JSON ответ с:
res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
до
res.json({"status": 200, "error": null, "response": results});