我有这样的路由器:
exports.read = (req,res) ->
// do stuff with DB
res.status(200).send
data:data
现在我如何在另一台路由器中使用此路由器,将其称为exports.wrapper
?我想避免不得不一次又一次地重写我的数据库请求。我想到的这种方法是推荐的吗?
答案 0 :(得分:2)
我不建议尝试将路由器包装在彼此内。
在Express 4中建议使用Express的路由器对象,如下所示:
// router.js
var myRouter = express.Router();
myRouter.route('/read', myController.readMethod);
然后在您的控制器中,您将处理请求并以结果调用结束:
// myController.js
exports.readMethod = function(req, res) {
var data = readFromDB(req.params);
res.send('read method renders', data);
}
exports.readMethod2 = function(req, res) {
var data = readFromDB(req.params);
res.send('read method 2 renders', data);
}
function readFromDB(params) {
// make a call to the DB (maybe via a model)
// return some data
}
希望有所帮助
修改强> 另外,我建议将数据库调用包装在模型中,以便将它们从路由器或控制器逻辑中抽象出来。有关使用MVC结账的组织良好的应用程序的参考,请使用此Yeoman生成器 - https://github.com/ngenerio/generator-express-simple
第二次修改 在我的简短示例中,将readFromDB方法外部化到模型使得此函数没有实际意义,如果它所做的只是从数据库获取数据将其放入模型中。