我目前正在为客户开展一个项目。我在注册帐户时尝试为用户分配角色。
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是 未定义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-垫片/ .npm /包/ node_modules / ES5-垫片/ ES5-shim.js:417:1) I20160402-16:04:42.483(-4)?在函数。 .each。 .forEach (packages / underscore / underscore.js:105:1)I20160402-16:04:42.483(-4)? 在after(packages / matb33_collection-hooks / insert.js:34:1) I20160402-16:04:42.483(-4)?在 Object.CollectionHooks.defineAdvice.self (包/ matb33_collection钩/ insert.js:49:1) I20160402-16:04:42.485(-4)?在Object.collection。(匿名 功能)[作为插入] (包/ matb33_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 (password_server.js:980:25)
有谁知道到底发生了什么?
答案 0 :(得分:0)
变量ROLES
未在钩子的上下文中定义。它既不是全球性的,也不是您使用的Meteor 1.3,并且您还没有将其从您定义的文件中导出并导入到您定义挂钩的文件中。