Javascript 与Meteor和React的角色
我目前正在为一个客户做一个项目。我试图在用户注册帐户时为他们分配角色Javascript 与Meteor和React的角色,javascript,meteor,reactjs,Javascript,Meteor,Reactjs,我目前正在为一个客户做一个项目。我试图在用户注册帐户时为他们分配角色 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 =
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])
}
}))
我发现,用户被创建了,但没有被重定向到仪表板,而是停留在注册页面上,并在toaster消息中收到一个错误,说明内部服务器错误。当我进入控制台查找创建的用户时,配置文件类型已分配,但用户缺少其电子邮件地址
这是我在终端窗口中遇到的错误:
调用方法“createUser”ReferenceError时发生异常:角色为
未定义I20160402-16:04:42.482(-4)?反对。
(两个/collection_hooks/hooks.jsx:3:35)I20160402-16:04:42.482(-4)?在packages/matb33\u 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)?在函数处..每个..每个 (packages/下划线/下划线.js:105:1)I20160402-16:04:42.483(-4)? 在之后(packages/matb33\u collection-hooks/insert.js:34:1) I20160402-16:04:42.483(-4)?在 Object.CollectionHooks.definedvice.self (packages/matb33_collection-hooks/insert.js:49:1) I20160402-16:04:42.485(-4)?在Object.collection.(匿名) [作为插入] (packages/matb33_collection-hooks/collection-hooks.js:117:1) I20160402-16:04:42.485(-4)?在[反对]时 对象].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)?在createUser (密码_server.js:980:25)
有人知道到底发生了什么吗?钩子上下文中没有定义变量
角色。它不是全局的,或者您使用的是Meteor 1.3,您没有从定义它的文件中导出它,也没有将它导入到定义钩子的文件中。这很有意义。这就是我似乎陷入困境的地方,尽管它正在全球化。我正在使用Meteor 1.2.1定义它,而不使用var
-只是ROLES={}
在/lib
下的文件中,这确实消除了内部服务器错误并创建了用户,但当我在控制台中获取用户时,角色数组返回空。您是从服务器发布用户的角色
密钥,还是它是配置文件
密钥的一部分?它只是附加到用户。用户类型是概要文件的一部分,但角色位于用户对象上的单独字段中。