2016-04-16 13 views
1

私は出版/サブスクリプションモデルの仕組みをよりよく理解しようとしています。Meteorの公開関数に名前を付ける必要がありますか?

詳しくはチュートリアルのthisの手順を参照しています。

if (Meteor.isServer) { 
    Meteor.publish('tasks', function tasksPublication() { 
    return Tasks.find(); 
    }); 
} 

tasksPublicationはチュートリアルの後にどこにも使用されていません。

文書hereを見ると、その名前は必要ではないようです。
公開機能に名前を付けるのに違いはありますか?名前の関数を使用して

答えて

6

は確かに公開、これらすべての作業は必要ありません:

Meteor.publish('tasks', function publishAllTasks() { return Tasks.find() }); 
Meteor.publish('tasks', function() { return Tasks.find() }); 
Meteor.publish('tasks',() => Tasks.find()); 

(3行目は特徴をArrow function

あり機能には、生の差はありません、との間で選択3つはほとんど味がするまで沸騰する。

ただし、最初の文(関数式という名前)だけが1つあります。キャッチされない例外が発生したときに名前がスタックトレースに表示されます。 (私はタイムスタンプを削除)

Exception from sub tasks id egG3xJuLTLFvH4jLT ReferenceError: Waffles is not defined
at Subscription.publishAllTasks [as _handler] (server/index.js:4:10)
(some boring stuff)

スタックトレースここ

// File: server/index.js 

Meteor.publish('tasks', function publishAllTasks() { return Waffles.find() }); 
// or: 
Meteor.publish('tasks',() => Waffles.find()); 

は、最初のケースでは、スタックトレースです: Tasksを書くとき

たとえばあなたがタイプミスを作りましょう、代わりにWafflesを書きます第2の場合:

Exception from sub tasks id u4rKBFH78uTBEoys2 ReferenceError: Waffles is not defined
at Subscription._handler (server/index.js:4:10)
(more boring stuff)

関数名がはっきりと現れます。
ファイル名と行は、行末に表示されたままです。

は、ログからクロールして、publishAllTasksから発信された/通過したすべての例外を見つける場合に役立ちます。
ファイル名と行がまだ残っていて、欠陥のある関数を見つけることがそのファイルを開くことに過ぎないので、デバッグするときにはあまり役に立ちません。


特定のログクロールが必要な場合を除いて、気にしないでください。

関連する問題