如何获取当前正在执行的Meteor方法的名称?
我可以从中获取当前正在执行的Meteor方法的名称吗 相同吗?这对于日志记录来说很方便 我用Meteor方法检查了如何获取当前正在执行的Meteor方法的名称?,meteor,Meteor,我可以从中获取当前正在执行的Meteor方法的名称吗 相同吗?这对于日志记录来说很方便 我用Meteor方法检查了这个。它是MethodInvocation的一个实例,似乎没有任何有用的方法名称 似乎将方法名称添加到MethodInvocation和调用者非常容易,但我不确定维护者是否会接受一个补丁,在每个MethodInvocation实例中添加一个name字段 交叉贴。这并不理想,但下面是如何使用monkey patchMeteor。获得此功能的方法,如stubailo建议的: var cu
这个。它是MethodInvocation
的一个实例,似乎没有任何有用的方法名称
似乎将方法名称添加到MethodInvocation
和调用者非常容易,但我不确定维护者是否会接受一个补丁,在每个MethodInvocation
实例中添加一个name
字段
交叉贴。这并不理想,但下面是如何使用monkey patchMeteor。获得此功能的方法,如stubailo建议的:
var currentMethod=new Meteor.EnvironmentVariable();
功能日志(消息){
var method=currentMethod.get();
如果(方法){
console.log(方法+”:“+消息);
}否则{
控制台日志(消息);
}
}
var oldMeteorMethods=Meteor.methods;
Meteor.methods=函数(对象){
var方法={};
_.each(对象、函数(函数、名称){
方法[名称]=函数(){
var self=这个;
var args=u0.toArray(参数);
返回currentMethod.withValue(名称,函数(){
返回函数应用(self,args);
});
};
});
方法(方法);
}
流星法({
示例:函数(arg1、arg2){
日志(“你好”);
返回剂量表hingelse(arg1)+arg2;
}
});
函数doSomethingElse(x){
log(“doSomethingElse用“+x”调用);
返回x*2;
}
//Meteor.call(“示例”,5,6)日志:
//“示例:你好”
//“示例:使用5调用doSomethingElse”
如果您不喜欢猴子补丁:
defineMethods=函数(对象){
var方法={};
_.each(对象、函数(函数、名称){
方法[名称]=函数(){
var self=这个;
var args=u0.toArray(参数);
返回currentMethod.withValue(名称,函数(){
返回函数应用(self,args);
});
};
});
流星.方法(方法);
}
定义方法({
示例:函数(arg1、arg2){
日志(“你好”);
返回剂量表hingelse(arg1)+arg2;
}
});
我对@user337的答案做了一点修改。现在您可以在方法函数中使用@name
。
将此添加到服务器代码(coffeescript):
只要我的两分钱,一个完全工作的猴子补丁版本(没有下划线)。
在方法函数内部,您现在可以使用此.currentMethodName
Meteor.methods = (object) => {
let methods = {};
let keys = Object.keys(object)
keys.forEach(key => {
methods[key] = function () {
let self = this;
let args = [...arguments];
self.currentMethodName = key
return object[key].apply(self, args);
}
})
oldMeteorMethods(methods);
}
流星1.10.1很简单
你可以用
this.name
e、 g
产出:
I20210126-08:35:30.120(0)? methodname:pod.create
作为一种解决方法,您可以使用monkey patchMeteor.methods
来实现这一点,它甚至可以是一个包。
new ValidatedMethod({
name: "pod.create",
validate: new SimpleSchema({
stuff: {
type: String,
}
}).validator(),
run(pData) {
console.log("methodname:" + this.name);
}
});
I20210126-08:35:30.120(0)? methodname:pod.create