Express.js:在路由器中使用路由器

我有这样的路由器:

exports.read = (req,res) -> // do stuff with DB res.status(200).send data:data 

现在我怎么能在另一个路由器里面使用这个路由器呢,把它叫做exports.wrapper ? 我想避免一次又一次地重写我的数据库请求。 我想要推荐的这种方法吗?

我不会推荐尝试将路由器内部包装。

在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 } 

希望有所帮助

编辑此外,我会build议将您的数据库调用包装在模型中,将其从您的路由器或控制器逻辑中抽象出来。 对于一个组织良好的快速应用程序,使用MVC签出此Yeoman发电机的引用 – https://github.com/gennerio/generator-express-simple

第二编辑在我简单的例子中,将readFromDB方法外部化到模型使得这个函数没有任何意义,如果它所做的只是从数据库中获取数据,将它放到模型中。