1

当我收到来自 rabbitmq 的消息时,我需要创建新用户。但是即使我用 Meteor.bindEnvironment 包装 Accounts.createUser 也不能在方法之外工作。但例如,当我调用 createUser 时 IronRouter 运行良好。如何在 Meteor 方法或客户端之外创建新用户?

var newUserCreate = Meteor.bindEnvironment(function(msg){
                                              var email, username = msg.data.email;
                                              var password = msg.data.password;
                                              Accounts.createUser({username: username, email: email, password: password});
                                            }, function(e){throw e;})

只需调用 newUserCreate(msg)

4

2 回答 2

2

当你写

var a, b = 42;

b等于42,但a停留undefined。我的猜测是该方法失败是因为您传入email: undefined了参数。所以尝试重写它,看看会发生什么:

var newUserCreate = Meteor.bindEnvironment(function(msg) {
    var email = msg.data.email;
    var username = msg.data.email;
    var password = msg.data.password;
    var result = Accounts.createUser({username: username, email: email, password: password});
    console.log("RESULT", result);
}, function(e){
    throw e;
});
于 2013-11-07T21:25:14.330 回答
1

它应该“正常工作”。记住不要在它不会触发的服务器上传递回调。您必须寻找它返回的内容。Fibers 将确保meteor 等到创建用户之后再运行下一条语句。返回的是新用户的_id.

例如

var result = Account.createUser(params);
于 2013-11-07T19:58:23.437 回答