3

最近 meteor のブランチを試し始めましたauth。 this.userId() を呼び出す meteor メソッドをどこで呼び出すかによって、null または必要なユーザー ID が返されます。

もう少し具体的に言うと、 Meteor.startup 内で初期化された coffeescript クラスから meteor メソッドが呼び出された場合は機能しますが、同じメソッドが Meteor.publish 内から呼び出された場合は機能しません

meteor メソッドは単純で、おそらく関連性はありませんが、念のため:

Meteor.methods(
  get_user_id: ->
    return @userId()
)

編集: 人々は私の問題を再現できなかったようです。これは、todo 認証の例のパッチで、それを実証する必要があります。

    diff --git a/examples/todos/server/methods.js b/examples/todos/server/methods.js
    index e69de29..d4182a6 100644
    --- a/examples/todos/server/methods.js
    +++ b/examples/todos/server/methods.js
    @@ -0,0 +1,6 @@
    +Meteor.methods({
    +  get_user_id: function() {
    +    console.log(this.userId());
    +    return this.userId();
    +  }
    +});
    diff --git a/examples/todos/server/publish.js b/examples/todos/server/publish.js
    index 1552c5e..87cb29f 100644
    --- a/examples/todos/server/publish.js
    +++ b/examples/todos/server/publish.js
    @@ -16,6 +16,8 @@ Todos = new Meteor.Collection("todos");

     // Publish visible items for requested list_id.
     Meteor.publish('todos', function (list_id) {
    +  Meteor.call('get_user_id');
    +  //console.log(this.userId())
       return Todos.find({
         list_id: list_id,
         privateTo: {

Eitanさん、パッチをありがとう!

4

4 に答える 4

3

You should use Meteor.userId() to retrieve the current user's ID within Meteor.methods. :)

于 2014-02-13T17:27:58.953 に答える
1

これはばかげているかもしれません:でも、ログインしていますか? (申し訳ありませんが、これは最終的に私の問題でした。)


したがって、ログインしているかどうかを最初に確認することをお勧めします。

if (this.userId)
    console.log(this.userId)
于 2013-01-15T18:57:11.077 に答える
0

それは私のために働いています。の戻り値をMeteor.call正しく取得していますか? 何かのようなもの:

Meteor.call 'get_user_id', (error, result) -> console.log(result)

メソッドに追加するとどうconsole.log(@userId())なりますか?

于 2012-06-25T05:37:55.023 に答える
0

this.userId()私が知る限り、それ自体は反応しません。そのため、他のものに反応させたい場合は、Session変数内に配置する必要があります。だから、Meteor.startupあなたから:

Session.set('userId', this.userId());

次に、必要な場合は、代わりにこれを使用できます。

Session.Get('userId');

そうすれば、欠落してnullいて後で埋められる場合があります。

于 2012-06-24T19:11:42.973 に答える