MEAN - метод router.get не запускается - PullRequest
0 голосов
/ 28 октября 2018

Мое требование довольно простое.Я пытаюсь загрузить настраиваемый angular component, если настройка еще не завершена.Я пытался отправить запрос на получение сервера, чтобы выяснить, что запись уже существует - если она существует, она будет перенаправлена ​​на другие angular component или останется в текущем angular component для настройки.

Я настроил свой express приложение для роутера следующим образом -

const admin_routes = require('./server/routes/admin');
const configure_routes = require('./server/routes/configure');

app.use(mongooseExpressErrorHandler);

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

app.use(express.static(path.join(__dirname, 'dist/product-bot')));
app.use(express.static(__dirname + '/server/images'));

app.use('/admin', admin_routes);
app.use('/configure', configure_routes);

app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, 'dist/products/index.html'));
});

app.post('*', (req, res) => {
    res.sendFile(path.join(__dirname, 'dist/products/index.html'));
});

Вот роутер -

const express       = require('express');;
const configureController = require('../controller/configure/configure');
const router        = express.Router();

router.get('/configure', configureController.check_super_admin_exists);

Вот мой код контроллера -

exports.check_super_admin_exists = function(req, res, next) {
  let find_super_admin_promise = userModel.find_user_by_role();

  find_super_admin_promise.then(function(result) {

    if (typeof result === 'undefined' || result === null) {
      res.redirect('/login');
    } else {
      next();
    }
  }).catch(function(error) {
    console.log(error);
    res.status(500);
    res.json('error');
  });
}

userModel.find_user_by_role()работает нормально, так как я уже использую код модели в другой функции.

Но проблема в том, что мой код маршрутизатора (router.get('/configure', configureController.check_super_admin_exists)) никогда не выполняется.Я работал с router.post() методом в том же проекте, и он отлично работает.

Не могли бы вы помочь мне выяснить, в чем проблема с моим кодом.

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

1 Ответ

0 голосов
/ 28 октября 2018

Что касается моих наблюдений, я думаю, что это из-за маршрута, который вы инициализировали в своем экспресс-приложении.

Пример:

На вас index.js / server.js , вы указали эту строку:

app.use('/configure', configure_routes);

Но тогда на вашем другой файл, который устанавливает ваши / настроить дочерние маршруты , вы указали, что у маршрута будет имя, такое же, как у вашего родителя (app.use ('/ configure', configure_routes))

router.get('/configure', configureController.check_super_admin_exists);

С этим вы можете получить доступ к маршруту конфигурации с помощью:

/configure/configure       

or

http://localhost:3000/configure/configure     // if you're running at port 3000

Чтобы получить доступ к нему как /configure или http://localhost:3000/configure, вам нужночтобы отредактировать конфигурацию вашего маршрута в другом файле, просто наберите '/'

router.get('/', configureController.check_super_admin_exists);

// This way, it will follow the parent's name setup from index / server.js
// app.use('/configure', configure_routes);

Структура маршрутов экспресс-выборки:

STRUCTURE           ROUTES                             API URL

/user        app.use('/user', userRoutes)            
   /         router.get('/', getUser);               GET     /user
   /         router.post('/', saveUser);             POST    /user
   /:id      router.put('/:id', updateUser);         PUT     /user/:id
   /:id      router.delete('/:id', deleteUser);      DELETE  /user/:id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...