【发布时间】:2016-04-03 05:54:57
【问题描述】:
我目前正在为客户开发一个项目。我正在尝试在用户注册帐户时为其分配角色。
handleSubmit(e){
e.preventDefault();
this.setState({message:'',messageClass:'hidden'});
var that = this;
var first_name = ReactDOM.findDOMNode(this.refs.first_name).value.trim();
var last_name = ReactDOM.findDOMNode(this.refs.last_name).value.trim();
var email = ReactDOM.findDOMNode(this.refs.email).value.trim();
var password = ReactDOM.findDOMNode(this.refs.password).value.trim();
var type = 'fan';
var user = {email:email,password:password,profile:{fullname:(first_name + last_name).toLowerCase(),firsname:first_name,lastname:last_name,avatar:'http://placehold.it/150x150',friends:[],type:type}};
Accounts.createUser(user,function(e){
if (e) {
Materialize.toast(e.reason, 5000);
} else {
FlowRouter.go('/dashboard');
}
})
}
以上是我处理注册表单的提交事件。下面是我添加的钩子,用于在插入用户后将角色分配给用户。
Meteor.users.after.insert(function (userId, doc) {
if (doc.profile.type === "fan") {
Roles.addUsersToRoles(doc._id, [ROLES.Fan])
}
});
我发现用户被创建,但没有被重定向到仪表板,用户仍然在注册页面上,并在烤面包机消息中收到一个错误,说明内部服务器错误。当我进入控制台查找创建的用户时,配置文件类型已分配,但用户缺少他们的电子邮件地址。
这是我在终端窗口中遇到的错误:
调用方法“createUser”时出现异常 ReferenceError: ROLES is 未定义 I20160402-16:04:42.482(-4)?在对象。 (both/collection_hooks/hooks.jsx:3:35) I20160402-16:04:42.482(-4)?
在 packages/matb33_collection-hooks/insert.js:35:1 I20160402-16:04:42.482(-4)?在 Array.forEach (包/es5-shim/.npm/package/node_modules/es5-shim/es5-shim.js:417:1) I20160402-16:04:42.483(-4)?在 Function..each..forEach (packages/underscore/underscore.js:105:1) I20160402-16:04:42.483(-4)? 在之后(packages/matb33_collection-hooks/insert.js:34:1) I20160402-16:04:42.483(-4)?在 Object.CollectionHooks.defineAdvice.self (包/matb33_collection-hooks/insert.js:49:1) I20160402-16:04:42.485(-4)?在 Object.collection.(匿名 函数) [作为插入] (包/matb33_collection-hooks/collection-hooks.js:117:1) I20160402-16:04:42.485(-4)?在 [对象 Object].Mongo.Collection.(匿名函数) [作为插入] (packages/mongo/collection.js:590:1) I20160402-16:04:42.485(-4)?
在 AccountsServer.Ap.insertUserDoc (accounts_server.js:1248:25) I20160402-16:04:42.486(-4)?在创建用户 (password_server.js:980:25)
有人知道到底发生了什么吗?
【问题讨论】:
标签: javascript meteor reactjs