我想使路由与控制器分开。
我的路线是:
'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');
})
答案 0 :(得分:1)
.get
(或任何路由器请求处理程序)的回调函数至少需要两个参数:request
和response
。您可以通过示例看到这一点:
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' ...
来知道查询何时发出了所有结果。
答案 1 :(得分:0)
我可能会误解您的问题,但是您是说res.json(...);
吗?