【问题标题】:Roles with Meteor and ReactMeteor 和 React 的角色
【发布时间】: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


    【解决方案1】:

    变量ROLES 没有在你的钩子上下文中定义。它不是全局的,或者您使用的是 Meteor 1.3,并且您还没有从定义它的文件中导出它并将其导入到定义钩子的文件中。

    【讨论】:

    • 这是有道理的。这就是我似乎陷入困境的地方,尽管它正在使其全球化。我正在使用 Meteor 1.2.1
    • 在没有var 的情况下定义它 - 在/lib 下的文件中只需ROLES = { }
    • 这确实消除了内部服务器错误并创建了用户,但是当我在控制台中获取用户时角色数组返回空。
    • 您是从服务器发布用户的roles 密钥还是profile 密钥的一部分?
    • 它只是依附于用户。用户类型是配置文件的一部分,但角色位于用户对象的单独字段中。
    猜你喜欢
    • 2016-05-15
    • 2023-03-17
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多