Как передать данные с контроллера на маршрутизатор в node.js ?

#javascript #node.js #mongodb

#javascript #node.js #mongodb

Вопрос:

У меня есть диаграмма папок, где у меня есть два файла controller и router, теперь я извлек данные из mongodb в контроллере, которые я пытаюсь передать маршрутизатору, чтобы я мог отправить их клиенту с помощью api, но мне не удалось получить ответ в маршрутизаторе, есть идеи, что реализовано неправильно.

Я упомянул папку diagram , потому что этот маршрутизатор предназначен только для этой конкретной модели, которая будет отправлять ответ только относительно диаграммы.

diagram.controller.js

 var Diagram = require('./diagram.model');
var mongoose = require('mongoose');
module.exports = function index() {
       Diagram.find({}, function(err, res) {
         if (!err) {
           console.log('Response from controller', res);
           return res;
         }
       });
     }
  

diagram.router.js

 var express = require('express');
var controller = require('./diagram.controller');

var router = express.Router();

console.log('THis is in router',controller.index());
router.get('/getAllDiagram',controller.index());

module.exports = router;
  

Ответ №1:

Вам нужно немного изменить свой код.

Первый аспект, который необходимо изменить, — это способ передачи index функции маршрутизатору. Пожалуйста, убедитесь, что вы не выполняете его напрямую. Эта функция будет вызвана, express когда запрос попадет на ваш сервер по определенному маршруту.

diagram.router.js

 router.get('/getAllDiagram', controller.index);
  

Следующее изменение касается самой index функции. Функция получает два параметра express : req — объект запроса и res — объект ответа:

diagram.controller.js

 module.exports.index = function index(req, res) {
    Diagram.find({}, function(err, result) {
        if (err) {
            console.error('Something bad happened: '   err.message);

            return res.status(500);
        }

        console.log('Response from controller', result);
        res.json(result);
    });
};
  

Пожалуйста, обратите внимание, что я переименовал вашу переменную res в result .

Комментарии:

1. Вы переименовали переменную в Diagram.find({}, function(err, result) to result ? В противном случае он перезаписывается, что приводит к указанному исключению.

2. Хорошо, вы можете вставить свой код в суть и опубликовать его здесь?

3. у вас нет доступа к gist

4. Код в ответе пока правильный. Есть ли шанс опубликовать свой где-нибудь? Pastebin и т. Д.?