Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与Meteor和React的角色_Javascript_Meteor_Reactjs - Fatal编程技术网

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
下的文件中,这确实消除了内部服务器错误并创建了用户,但当我在控制台中获取用户时,角色数组返回空。您是从服务器发布用户的
角色
密钥,还是它是
配置文件
密钥的一部分?它只是附加到用户。用户类型是概要文件的一部分,但角色位于用户对象上的单独字段中。