如何在服务器方法之外调用Accounts.createUser

时间:2013-11-07 17:04:27

标签: meteor

当我从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)

2 个答案:

答案 0 :(得分:2)

写作时

var a, b = 42;

然后b等于42,但a保持undefined。我的猜测是该方法失败了,因为你在params中传递了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;
});

答案 1 :(得分:1)

它应该'正常工作'。记住不要在它不会触发的服务器上传递回调。你必须寻找它返回的东西。光纤将确保meteor等待,直到在下一个语句运行之前创建用户。返回的是新用户的_id

e.g

var result = Account.createUser(params);