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、params を渡すため、メソッドは失敗します。したがって、それを書き直して、何が起こるかを確認してください。

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

それは「うまくいく」はずです。起動しないサーバーにコールバックを渡さないでください。代わりに、それが返すものを探す必要があります。ファイバーは、次のステートメントが実行される前に、ユーザーが作成されるまで meteor が確実に待機するようにします。返されるのは、新しいユーザーの_id.

例えば

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