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

时间:2015-08-19 10:36:46

标签: node.js express

我有这样的路由器:

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

现在我如何在另一台路由器中使用此路由器,将其称为exports.wrapper?我想避免不得不一次又一次地重写我的数据库请求。我想到的这种方法是推荐的吗?

1 个答案:

答案 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方法外部化到模型使得此函数没有实际意义,如果它所做的只是从数据库获取数据将其放入模型中。