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
传递给控制器?