Meteor 发布函数应该命名吗?
Should Meteor publication functions be named?
我正在尝试更好地了解发布/订阅模型的工作原理。
具体来说,我指的是教程中的 this 步骤。
if (Meteor.isServer) {
Meteor.publish('tasks', function tasksPublication() {
return Tasks.find();
});
}
名称 tasksPublication
在本教程后面的任何地方都没有用到。
查看文档here似乎不需要这个名字。
命名发布函数有什么不同吗?
发布时确实不需要使用命名函数,所有这些工作:
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
.
的所有未捕获异常,可能 会有所帮助
它在调试时没有多大帮助,因为您仍然有文件名和行,找到错误的函数只是打开该文件的问题。
因此,除非您有特定的日志抓取需求,否则请不要费心去选择您喜欢的那个。
我正在尝试更好地了解发布/订阅模型的工作原理。
具体来说,我指的是教程中的 this 步骤。
if (Meteor.isServer) {
Meteor.publish('tasks', function tasksPublication() {
return Tasks.find();
});
}
名称 tasksPublication
在本教程后面的任何地方都没有用到。
查看文档here似乎不需要这个名字。
命名发布函数有什么不同吗?
发布时确实不需要使用命名函数,所有这些工作:
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
.
的所有未捕获异常,可能 会有所帮助
它在调试时没有多大帮助,因为您仍然有文件名和行,找到错误的函数只是打开该文件的问题。
因此,除非您有特定的日志抓取需求,否则请不要费心去选择您喜欢的那个。