了解快速 nodeJs 路由器行为
Understanding express nodeJs router behavior
此路由工作正常:
router.post('/addlog', multipartMiddleware, function(req,res){
controller.postLog(req,res);
});
但是如果我像这样更改呼叫:
router.post('/addlog', multipartMiddleware, controller.postLog(req,res));
节点抱怨ReferenceError: req is not defined
.控件位于单独的文件中:
exports.postLog = function(req, res, next) {
console.log(req.body);
res.status(200).send('OK');
}
为什么?
您立即调用controller.postLog
并将该调用的结果传递给router.post
。
假设您不需要访问this
,因为postLog
内部controller
:
router.post('/addlog', multipartMiddleware, controller.postLog);
这会将对postLog
函数的引用传递给router.post
这是该函数所期望的 - 它需要对函数的引用,以便可以使用请求和响应对象调用该函数。
如果您需要this
内部postLog
引用controller
您可以使用bind
生成将在controller
上下文中调用的新函数:
router.post('/addlog', multipartMiddleware, controller.postLog.bind(controller));
问题不在于路由器行为,下面是关于 JS 中回调的文章。
http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- nodejs-expressjs上传图像并显示它们
- AngularJS UI路由器不能像ng路由器那样工作
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- 反应路由器弄乱了请求网址
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- NodeJS日期格式不起作用
- Nested Q.all nodejs
- 如何使用带有Preact的React路由器
- Nodejs API控制器,用于在API之间切换
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- 如何在大型nodeJS代码的基础上逐步引入typescript
- 在Nodejs中Express输入DEBUG=app时权限被拒绝/bin
- 如何在不使用 npm 包的情况下编写香草 nodejs 路由器
- 有没有办法在express nodejs中将参数传递给路由器
- 了解快速 nodeJs 路由器行为
- 简单的 NodeJS 路由器问题 -- 行为异常的案例语句
- NodeJs Express路由器错误
- 在NodeJS中找不到路由器
- 无法访问请求.当使用路由器时,在nodeJS中使用express 4.0