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