【发布时间】:2014-04-25 19:55:00
【问题描述】:
所以我正在尝试使用 nodejs 构建一个应用程序,使用 express 和 passport,但是当我尝试执行某种 TDD 时,我想将业务逻辑与控制器分离。
所以我有一个常见的场景是这样的:
-
经过身份验证的用户想要删除一个项目,他向 api 发送请求:
DELETE /api/item/1 -
请求由控制器方法处理,它将发出请求的用户传递到下一层(这似乎不是一个好方法):
exports.delete = function (req, res, next) { var itemId = req.params.id; var userId = req.user._id; itemService.delete(itemId, userId, function (err, item) { if (err) next(err); return res.json(item); }); }; 服务层(或任何您想调用的层,具有所有业务逻辑的层)然后检查项目是否由该用户拥有,然后将其删除或返回错误。
所以我想知道是否有任何方法可以在不从控制器传递的情况下从任何层获取当前用户。
【问题讨论】:
-
你可以设置一个全局属性,但你真的不想这样做。
标签: node.js passport.js