如何在nodejs中设置运行多个控制器功能
How to set run multiple controller functions in nodejs
我目前正在工作的锅炉板代码的平均值。IO和实现密码发送给它。当用户要求以email作为参数重置密码时,我创建了一个salt(resetid),并将该salt作为重置链接发送给他。
我在请求中有用户的电子邮件,但想在用户(user._id)进入实际createemail控制器功能之前附加其他信息。我想下面的函数(userbyemail)要运行之前,它进入createResetPasswordEmailLink
/**
* Find user by email
*/
exports.userByEmail = function(req, res, next, email) {
User
.findOne({
email: email
})
.exec(function(err, user) {
if (err) return next(err);
if (!user) return next(new Error('Failed to load User with email ' + email));
req.user = user;
next();
});
};
exports.createResetPasswordEmailLink = function(req, res) {
var resetPassword = new ResetPassword(req.body);
resetPassword.resetId = new User().makeSalt();
**resetPassword.user = req.user._id; // currently req.user is null**
console.log(resetPassword.userId);
resetPassword.save(function(err) {
if (err) {
// handle error
}
res.status(200);
return res.redirect('/');
});
};
下面是我的resetPassword模式
var ResetPasswordSchema = new Schema({
created: {
type: Date,
default: Date.now
},
resetId: {
type: String,
default: '',
trim: true
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
});
我的路由定义如下
// Setting up the users resetpasswordlink
app.route('/createresetpasswordemaillink')
.post(users.createResetPasswordEmailLink);
我可以用app.params解决这个问题。App.params就是为这种用法而定义的。
我添加了
// Setting up the userId param
app.param('email', users.userByEmail);
传递给我的路由,它会在请求传递给常规控制器之前自动执行这个函数。
在文档中,App.param被定义为
应用程序。回调参数([名字])将逻辑映射到路由参数。例如,当:user出现在路由路径中时,你可以映射用户加载逻辑来自动提供请求。
相关文章:
- 角度控制器功能赢得'不按指令工作
- 角度控制器功能不;在指令内部调用时,似乎无法始终如一地工作
- 控制器功能在 Angular.js 中不起作用
- 从 AngularJS 中的控制器功能发送数据以供查看
- ng重复调用控制器功能的次数太多
- 无法理解Angular JS中的控制器功能
- 如何使$filter在angularjs中的所有控制器功能中可用
- Ionic Angular/为什么在控制器功能结束之前不调用服务
- 创建通用控制器功能
- $browser.notifyWhenNoOutoutstanding Requests不考虑控制器功能
- 在 ng 单击不部分调用控制器功能时遇到困难
- 角度控制器功能坏了
- AngularJS :如何从控制器功能切换视图
- AngularJS:使用虚拟机从外部调用控制器功能
- 角度控制器功能未运行
- 如何从控制器功能内部获取$scope
- 角度:如何使$scope属性与控制器功能保持同步
- 无法引用控制器功能 ZF2
- AngularJS 控制器功能最佳实践
- 从角度控制器功能访问表单输入