Node.js Express.js:在路由器中使用路由器
我有这样的路由器:Node.js Express.js:在路由器中使用路由器,node.js,express,Node.js,Express,我有这样的路由器: exports.read = (req,res) -> // do stuff with DB res.status(200).send data:data 现在,我如何在另一个路由器中使用此路由器,称之为导出.wrapper?为了避免一次又一次地重写我的DB请求,我使用了wnat。这是我心目中推荐的方法吗?我不建议尝试将路由器封装在彼此内部 建议在Express 4中使用Express的路由器对象,如下所示: // router.js var myR
exports.read = (req,res) ->
// do stuff with DB
res.status(200).send
data:data
现在,我如何在另一个路由器中使用此路由器,称之为导出.wrapper?为了避免一次又一次地重写我的DB请求,我使用了wnat。这是我心目中推荐的方法吗?我不建议尝试将路由器封装在彼此内部 建议在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
}
希望有帮助
编辑
此外,我建议将DB调用包装在一个模型中,以便将它们从路由器或控制器逻辑中抽象出来。有关使用MVC的组织良好的Express应用程序的参考,请检查此Yeoman生成器-
第二次编辑
在我的非常简短的示例中,将readFromDB方法外部化到一个模型中会使此函数变得毫无意义,如果它所做的只是从DB中获取数据,则将其放入一个模型中。如何在另一个方法中重复使用“exports.readMethod”,假设它被称为readMethod2?如果你想从同一个模块调用readMethod,你不能,你必须将它声明为一个函数,我将对上面的答案进行编辑,这样就不可能重复使用readMethod。我有readMethod内部的业务逻辑,不想重复两次业务逻辑,我遵循的是枯燥的原则。因此,我想我会按照您对readFromDB的建议,将我的逻辑放入其中,“OOP them”放入coffee类中,
require
将它们放入控制器中,在控制器中我可以多次将它们作为实例重复使用。