Javascript 如何使用路由和控制器将数据显示为JSON?

Javascript 如何使用路由和控制器将数据显示为JSON?,javascript,node.js,Javascript,Node.js,我想把路线和控制器分开 我的路线是: 'use strict'; module.exports = function(app) { var controller = require('../controllers/controller'); app.route('/').get(controller.index); }; 控制器为: exports.index = function() { request = new Request( "MYQUERY", fun

我想把路线和控制器分开

我的路线是:

'use strict';
module.exports = function(app) {
  var controller = require('../controllers/controller');

  app.route('/').get(controller.index);
};
控制器为:

exports.index = function() {
  request = new Request(
    "MYQUERY",
    function(err, rowCount) {
      if (err) {
        console.log(err);
      } else {
        console.log(rowCount + ' rows');
      }
      connection.close();
    }
  );

  request.on('row', function(columns) {
    columns.forEach(function(column) {
      if (column.value === null) {
        console.log('NULL');
      } else {
        console.log(column.value);
      }
    });
  });

  connection.execSql(request);
};
我可以在终端控制台中看到结果,但我想将其作为JSON返回到http。如果我同时使用控制器和路由,我可以使用以下选项:

router.get('/about', function (req, res) {
  res.send('About this wiki');
})

我可能误解了你的问题,但你的意思是
res.json(…)

.get
(或任何路由器请求处理程序)的回调函数至少包含两个参数:
请求
响应
。您可以通过示例看到这一点:

router.get('/about', function (req, res) {
  res.send('About this wiki');
})
您可以重写它,使回调成为命名函数而不是匿名函数:

const aboutHandler = function (req, res) {
  res.send('About this wiki');
});

router.get('/about', aboutHandler);
您的
controller.index
是同一种函数,因此它将接受这两个参数。您只需更改函数即可接受它们:

exports.index = function (req, res) {

这将允许您访问
res
,如果您通过累积行结果构建json对象,您可以根据需要使用它,通过
res.send
res.json
发送响应。您可以使用
request.on('end'…
以了解查询何时发出了所有结果。

您导出的
index
函数将获取请求和响应参数,如回调go
/about
。然后您可以对MySQL结果使用
res.send
res.json
。我尝试了以下方法:
exports.index=function(req,res)
和'app.route('/').get(controller.index(req,res))`但没有帮助。它说未定义的
res
。不,不要做
controller.index(req,res)
,只使用
controller.index
(即您以前拥有的)类型错误:res.send不是一个函数
console.log(res)
say?如何将
res
传递给控制器?