как передать данные из контроллера в маршрут - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь передать данные с контроллера на маршрут.

Я хочу изменить код состояния с контроллера на маршрут.скажем, если в состоянии контроллера 200, то измените его на 400 из маршрутов

или

просто напечатайте привет или что-то из маршрутов после ответа

вот контроллер из файла контроллера
контактный контроллер.js

exports.index = function(req, res) {
  Contact.get(function(err, contacts) {
    if (err) {
      res.json({
        status: "error",
        message: err
      });
    }

    res.json({
      status: "success",
      message: "Contacts retrieved successfully",
      data: contacts
    });
  });
};

вот его маршрут из файла маршрута
contact router.js

var contactController = require('./contactController');

// Contact routes
router.route('/contacts')
    .get(contactController.index)

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Не завершайте цикл запрос-ответ в контроллере, просто верните результат из контроллера вместо завершения цикла.

const httperror = require('http-errors');

exports.index = async function(parameter) {
  Contact.get(function(err, contacts) {
    if (err) {
     throw new httperror(400, "Error occured!");
    }

    return {
       status: "success",
       message: "Contacts retrieved successfully",
       data: contacts
    }
  });
};

запрос должен начинаться с маршрута, а ответ должен отправляться сМаршрут

const contactController = require('./contactController');

router.get('/contacts', function (req, res, next) {
   contactController.index()
     .then(result => {
        res.json(result)
     }).catch((error) => {
        res.status(200).json({"Error":"Returned success code 200 even though error 
        occured"});
   })
});
0 голосов
/ 05 марта 2019

Следуйте этой статье, чтобы разработать приложение с помощью экспресс-маршрутизатора.

https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4

определить свой контроллер следующим образом

exports.index = function(req, res, next) {
  Contact.get(function(err, contacts) {
    if (err) {
      next(null,{
        status: "error",
        message: err
      });
    }

    next({
      status: "success",
      message: "Contacts retrieved successfully",
      data: contacts
    },null);
  });
};

Определить основной файл приложения следующим образом

var contactController = require('./contactController');
    var router = express.Router();
    // apply the routes to our application
    // route middleware that will happen on every request
    router.use(function(req, res, next) {
        // continue doing what we were doing and go to the route
        next(); 
    });

    // about page route (http://localhost:8080/about)
    router.get('/contacts', function(req, res) {
        //here you can call your controller js method
        contactController.index(req,res, function(data, err){
            //change anything you want here and set into res.
            if(err){
              //change status and data
            }
            else{
               //change status and data 
            }
         })
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...