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
将它们放入控制器中,在控制器中我可以多次将它们作为实例重复使用。