gpt4 book ai didi

meteor - 如何在所有 Meteor 方法调用的开头添加一个钩子(Hook)?

转载 作者:行者123 更新时间:2023-12-02 04:24:57 24 4
gpt4 key购买 nike

例如,每当未登录的客户端调用任何方法时,我想抛出错误,并且我想对已登录的客户端调用的方法进行速率限制。我希望有一个比

更好的解决方案
Meteor.methods 

foo: ->
checkLoggedInAndRate()
...

bar: ->
checkLoggedInAndRate()
...

...

最佳答案

您可以使用以下一些 JavaScript 技巧:

首先,让我们定义一个新的 Meteor.guardedMethods 函数,我们将用它来定义我们的 protected 方法,它将接受常规方法对象以及我们想要使用的保护函数作为参数:

Meteor.guardedMethods=function(methods,guard){
var methodsNames=_.keys(methods);
_.each(methodsNames,function(methodName){
var method={};
method[methodName]=function(){
guard(methodName);
return methods[methodName].apply(this,arguments);
};
Meteor.methods(method);
});
};

这个函数只是迭代方法对象,并通过首先调用我们的保护函数然后调用 true 方法来重新定义底层函数。

这是一个使用我们新定义的方法的简单示例,让我们定义一个虚拟保护函数和一个 Meteor 方法来测试它:

function guard(methodName){
console.log("calling",methodName);
}

Meteor.guardedMethods({
testMethod:function(){
console.log("inside test method");
}
},guard);

此方法的示例输出为:

> calling testMethod
> inside test method

关于meteor - 如何在所有 Meteor 方法调用的开头添加一个钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com