1

Я пытаюсь лучше понять, как работает модель публикации/подписки.Должны ли быть названы функции публикации Метеор?

В частности, я имею в виду шаг 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()); 

(Третья строка показывает Arrow function)

Там нет сырой разницы в функциональности, и выбор между три в основном сводятся к вкусу.

Однако есть одна вещь, которую делает только первый оператор (названное выражение функции): имя появляется в стековых трассировках при возникновении неперехваченного исключения.

Для примера скажем, вы допустили ошибку при написании Tasks и писать Waffles вместо:

// File: server/index.js 

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

Вот трассировки стека в первом случае (я удалил метки времени)

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

Стек трассировки во втором случае:

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

В тыс. В первом случае имя функции отображается четко.
Имя файла и строка все еще отображаются в конце строки.

Это может быть может быть полезным, если вы ползаете по своим журналам, чтобы найти все неперехваченные исключения, которые возникли из/прошли через publishAllTasks.
Это не поможет при отладке, поскольку, поскольку у вас все еще есть имя файла и строка, и поиск неисправной функции - это просто открытие этого файла.


Так что, если у вас нет особых требований к обходу журналов, не беспокойтесь и не пойдите в зависимости от того, что вы предпочитаете.