1

サーバー上のコレクションの1つとしてobserveを使用したいが、私はuserIdを取得する必要があります this.userIdMeteor.userId()を使用しようとしていますが、動作しません!詳細とエラーメッセージ を解決するには、次のコードを参照してください。observeコールバックでuserIdを取得する方法

Messages.find({state:"outbox"}).observe({ 
    added: (doc) => { 
    console.log(" observe "); 
     console.log("userId : " + this.userId); // undefined 
     console.log("Meteor.userId(): " + Meteor.userId()); // "Exception in queued task: Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions." 
     //....... 
    } 
}); 

あなたの注意をありがとう。

+0

これはパブリッシュ関数内から呼び出されるのですか、サーバーが起動するとグローバルに呼び出されるのですか? –

答えて

2

observeコールバック内でthisキーワードは、公開オブジェクト(関連するクエリのカーソルを指す)を指していないため、userIdプロパティはありません。

パブリケーション自体の体内で

const userId = this.userId; 

を使用して機能するuserIdを利用できるようにして、単に(userIdとして)コールバックにそれを使用するクロージャを作成することができます。

関連する問題