如何在node.js中将数据从控制器传递到路由器?

时间:2016-10-10 20:17:48

标签: javascript node.js mongodb

我有文件夹图,其中我有两个文件控制器和路由器,现在我从控制器中的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 个答案:

答案 0 :(得分:3)

您必须稍微修改一下代码。

必须更改的第一个方面是将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