流星和反应的角色

问题描述:

我目前正在为客户开展一个项目。我试图在用户注册帐户时为用户分配角色。流星和反应的角色

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]) 
} 

});

什么我发现是,用户被创建,但不是被重定向到仪表板,用户仍然在注册页面上,并在烤面包机消息,说明内部服务器错误接收到错误。当我进入控制台查找创建的用户时,将指定配置文件类型,但用户缺少其电子邮件地址。

这是我得到我的终端窗口中的错误:

Exception while invoking method 'createUser' ReferenceError: ROLES is not defined I20160402-16:04:42.482(-4)? at Object. (both/collection_hooks/hooks.jsx:3:35) I20160402-16:04:42.482(-4)?
at packages/matb33_collection-hooks/insert.js:35:1 I20160402-16:04:42.482(-4)? at Array.forEach (packages/es5-shim/.npm/package/node_modules/es5-shim/es5-shim.js:417:1) I20160402-16:04:42.483(-4)? at Function..each..forEach (packages/underscore/underscore.js:105:1) I20160402-16:04:42.483(-4)? at after (packages/matb33_collection-hooks/insert.js:34:1) I20160402-16:04:42.483(-4)? at Object.CollectionHooks.defineAdvice.self (packages/matb33_collection-hooks/insert.js:49:1) I20160402-16:04:42.485(-4)? at Object.collection.(anonymous function) [as insert] (packages/matb33_collection-hooks/collection-hooks.js:117:1) I20160402-16:04:42.485(-4)? at [object Object].Mongo.Collection.(anonymous function) [as insert] (packages/mongo/collection.js:590:1) I20160402-16:04:42.485(-4)?
at AccountsServer.Ap.insertUserDoc (accounts_server.js:1248:25) I20160402-16:04:42.486(-4)? at createUser (password_server.js:980:25)

没有人有任何想法究竟是怎么回事?

可变ROLES未在钩的上下文中定义。它不是全球性的,或者你正在使用Meteor 1.3,你没有从你定义的文件中导出它,并将它导入到你定义钩子的文件中。

+0

这很有道理。这就是我似乎陷入困境的地方,尽管它在全球化。我正在使用Meteor 1.2.1 –

+0

在'/ lib'下的文件中定义它没有'var' - 只是'ROLES = {}' –

+0

这确实消除了内部服务器错误并且创建了用户,但角色当我在控制台中获取用户时,数组返回空。 –