获取Meteor方法以返回函数?

获取Meteor方法以返回函数?,meteor,Meteor,我想定义一个服务器端Meteor方法,当调用该方法时,它将在客户端上运行函数 下面的超简单示例-我希望此方法获取一个参数,调用时将在客户端控制台上运行console.log(parameter) Meteor.methods({ consoleLogOnClient: function(text){ var log = function(){ console.log(text); }; return log();

我想定义一个服务器端Meteor方法,当调用该方法时,它将在客户端上运行函数

下面的超简单示例-我希望此方法获取一个参数,调用时将在客户端控制台上运行
console.log(parameter)

Meteor.methods({

    consoleLogOnClient: function(text){
        var log = function(){ 
            console.log(text);
        };
        return log();
    }

});
但当我这样做的时候:

Meteor.call('consoleLogOnClient', 'THIS MESSAGE SHOULD APPEAR ON THE CLIENT CONSOLE');
该消息将记录在服务器控制台中,而客户端控制台中不会显示任何内容

好吧,很公平。也许我只需要返回函数代码本身并将其存储在变量中,然后运行它。但它也不起作用

Meteor.methods({

    consoleLogOnClient: function(text){
        var log = function(){ 
            console.log(text);
        };
        return log;
    }

});

var myFunction = Meteor.call('consoleLogOnClient', 'THIS MESSAGE SHOULD APPEAR ON THE CLIENT CONSOLE');

myFunction();

它们应该返回一个EJSON可调用的值或引发异常

埃克森:

因此,答案是不能将函数从服务器发送到客户端,因为函数不是EJSON值。但你真正的问题可能是你想发送一个函数;我无法想象你为什么要那样做。改为发送数据。

它们应该返回一个EJSON可调用的值或引发异常

埃克森:

因此,答案是不能将函数从服务器发送到客户端,因为函数不是EJSON值。但你真正的问题可能是你想发送一个函数;我无法想象你为什么要那样做。改为发送数据。

它们应该返回一个EJSON可调用的值或引发异常

埃克森:

因此,答案是不能将函数从服务器发送到客户端,因为函数不是EJSON值。但你真正的问题可能是你想发送一个函数;我无法想象你为什么要那样做。改为发送数据。

它们应该返回一个EJSON可调用的值或引发异常

埃克森:


因此,答案是不能将函数从服务器发送到客户端,因为函数不是EJSON值。但你真正的问题可能是你想发送一个函数;我无法想象你为什么要那样做。改为发送数据。

您可以使用软件包获得所需的结果。它允许您定义可以从服务器端运行的客户端方法

例如,如果您定义:

Meteor.ClientCall.methods({
  'consoleLog': function(message) {
    console.log(message);
  },
});
并将方法的
userId
设置为
clientId

Deps.autorun(function() {
  Meteor.ClientCall.setClientId(Meteor.userId());
});
然后在服务器端,您只需调用:

Meteor.ClientCall.apply(userId, 'consoleLog', ['THIS MESSAGE SHOULD APPEAR IN THE CLIENT CONSOLE']);

您可以使用该软件包实现所需的结果。它允许您定义可以从服务器端运行的客户端方法

例如,如果您定义:

Meteor.ClientCall.methods({
  'consoleLog': function(message) {
    console.log(message);
  },
});
并将方法的
userId
设置为
clientId

Deps.autorun(function() {
  Meteor.ClientCall.setClientId(Meteor.userId());
});
然后在服务器端,您只需调用:

Meteor.ClientCall.apply(userId, 'consoleLog', ['THIS MESSAGE SHOULD APPEAR IN THE CLIENT CONSOLE']);

您可以使用该软件包实现所需的结果。它允许您定义可以从服务器端运行的客户端方法

例如,如果您定义:

Meteor.ClientCall.methods({
  'consoleLog': function(message) {
    console.log(message);
  },
});
并将方法的
userId
设置为
clientId

Deps.autorun(function() {
  Meteor.ClientCall.setClientId(Meteor.userId());
});
然后在服务器端,您只需调用:

Meteor.ClientCall.apply(userId, 'consoleLog', ['THIS MESSAGE SHOULD APPEAR IN THE CLIENT CONSOLE']);

您可以使用该软件包实现所需的结果。它允许您定义可以从服务器端运行的客户端方法

例如,如果您定义:

Meteor.ClientCall.methods({
  'consoleLog': function(message) {
    console.log(message);
  },
});
并将方法的
userId
设置为
clientId

Deps.autorun(function() {
  Meteor.ClientCall.setClientId(Meteor.userId());
});
然后在服务器端,您只需调用:

Meteor.ClientCall.apply(userId, 'consoleLog', ['THIS MESSAGE SHOULD APPEAR IN THE CLIENT CONSOLE']);

哦,我明白了。我猜是流星的东西。我正在做一些表单验证的东西。例如,文本字段不能为空。在客户机上进行验证很简单。但我也希望在服务器上执行相同的验证。当验证失败时,我想返回并自动运行带有jQuery的函数,比如突出显示文本框或其他内容。有点像快捷方式。如果客户端验证失败,请运行jQuery函数。如果您在客户端上验证所有内容,那么如果验证失败,服务器上的验证不需要返回任何内容,因为只有用户没有在客户端上使用您的验证,验证才会失败,除非用户是黑客,否则这种情况永远不会发生。你和我在一起吗?哦,我明白了。我猜是流星的东西。我正在做一些表单验证的东西。例如,文本字段不能为空。在客户机上进行验证很简单。但我也希望在服务器上执行相同的验证。当验证失败时,我想返回并自动运行带有jQuery的函数,比如突出显示文本框或其他内容。有点像快捷方式。如果客户端验证失败,请运行jQuery函数。如果您在客户端上验证所有内容,那么如果验证失败,服务器上的验证不需要返回任何内容,因为只有用户没有在客户端上使用您的验证,验证才会失败,除非用户是黑客,否则这种情况永远不会发生。你和我在一起吗?哦,我明白了。我猜是流星的东西。我正在做一些表单验证的东西。例如,文本字段不能为空。在客户机上进行验证很简单。但我也希望在服务器上执行相同的验证。当验证失败时,我想返回并自动运行带有jQuery的函数,比如突出显示文本框或其他内容。有点像快捷方式。如果客户端验证失败,请运行jQuery函数。如果您在客户端上验证所有内容,那么如果验证失败,服务器上的验证不需要返回任何内容,因为只有用户没有在客户端上使用您的验证,验证才会失败,除非用户是黑客,否则这种情况永远不会发生。你和我在一起吗?哦,我明白了。我猜是流星的东西。我正在做一些表单验证的东西。例如,文本字段不能为空。在客户机上进行验证很简单。但我也希望在服务器上执行相同的验证。当验证失败时,我想返回并自动运行带有jQuery的函数,比如突出显示文本框或其他内容。有点像快捷方式。如果客户端验证失败,请运行jQuery函数。如果在客户机上验证所有内容,则无需在服务器上重新验证