当前位置: 首页 > 面试题库 >

何时使用Meteor.method和利用存根

高宏峻
2023-03-14
问题内容

使用Meteor,我试图了解何时使用服务器端,Meteor.methods()同时仍保留即时UI更新。

在Andrew
Scala的入门教程中,他声称Meteor.methods()当您要更新和修改数据库文档时应使用:

这个想法是,您定义服务器上所有执行危险操作(如修改和更新数据)的功能,然后让客户端调用这些功能并获得返回值(如常规功能)。客户永远不会看到实现,也不会亲自修改数据。服务器完成所有工作。

并遵循此建议,我在代码中实现了这一点:

服务器端:

Meteor.methods({

  addMovie: function(data) {
    var movie = Movies.insert({name: data});
    return movie;
  },

  ...

客户端:

    Template.movies.events = ({

      'click #add-movie': function(e) {

        var name = document.getElementById('movie-name').value;
        Meteor.call('addMovie', name);

        return false;

      }, 

      ...

可以,但是很慢。用户界面不会立即更新,就像您Movies.insert()在客户端调用时一样。该文件表明,以纠正问题,您可以创建在客户端存根:

客户端上的调用方法定义与同名服务器方法相关联的存根函数。如果不想,则不必为方法定义存根。在这种情况下,方法调用就像其他系统中的远程过程调用一样,您必须等待服务器的结果。

但是这些存根应该是什么样的?它基本上应该与服务器端方法相同吗?如果是这样,那有什么意义呢?我正在寻找Meteor.methods()有关stub
的用途和目的,存根的点/用途及其实现的更全面的解释。

编辑:David Greenspan帮助澄清了Meteor
-talk上Meteor.methods()和存根的使用。


问题答案:

这是另一个例子。

假设您正在编写宾果游戏,然后单击按钮以调用“ house!”。在单击事件中,您可能会调用Method,例如

Method.call("callHouse");

这将调用服务器方法:

    // on the server
    Meteor.methods({
      callHouse: function () {
        if (currentGame.isInProgress) {
          currentGame.winner = this.userId;
          currentGame.end();
        }
      }
    });

if you are the first to call “house”, the method will mark you as the winner..
however, let’s pretend the method is extremely slow and your client app is
waiting.. you’re 99% sure the server will confirm you are the winner - you
just want to update the user’s screen without the wait.. in this case
implement a client-side stub:

// on the client
Meteor.methods({
  callHouse: function () {
    currentGame.winner = Meteor.userId();
    // add any other side-effects you expect to occur here
  }
});

when the server result returns, if the data returned is different to what you
set in the stub, it will correct it and refresh the screen accordingly.



 类似资料:
  • 问题内容: 我一直在nodejs中编程,研究了如何同时使用socket.io和对节点服务器的ajax调用。socket.io是否设计为替代ajax?我很好奇,在哪种情况下使用socket.io更好,而哪种ajax更好。感谢您的输入。 问题答案: 好吧,Web套接字(通过socket.io)提供的主要内容之一就是ajax缺乏的是服务器推送。因此,对于ajax,如果您想了解服务器上的新事件(例如,另一

  • 本文向大家介绍利用Python如何实时检测自身内存占用,包括了利用Python如何实时检测自身内存占用的使用技巧和注意事项,需要的朋友参考一下 前言 最近在做文本统计,用 Python 实现,遇到了一个比较有意思的难题——如何保存统计结果。 直接写入内存实在是放不下,十几个小时后内存耗尽,程序被迫关闭。如果直接写入数据库吧,每次写入又太慢了,本来就十几个小时了,这样下去就要往星期上数了,也不是个办

  • 我创建了一个简单的服务,它执行4个HTTP调用和4个db调用来收集一些数据,并将其作为< code>JSON传递给< code>HTTP响应。 当我启动应用程序(本机,没有docker)时,我看到它消耗,有时,有时30MB。好。 当我开始加载测试它时,每10毫秒发送1个请求,总共100个请求。 我注意到内存消耗立即达到200MB。然后经过5-6次以上的测试到400MB。(就像Spring启动版本一

  • 问题内容: 我知道它是如何工作的,在这种情况下div将呈现红色,因为现在它具有优先级(!important)。但是我仍然找不到适合的情况来使用它。有人知道节省时间的任何例子吗? 问题答案: 考虑一下: 您如何使段落始终变成红色,即使里面也是如此?如果没有,则第一条规则将具有更多的特异性,并将胜过第二条规则。

  • 问题内容: 我得到了asyncio在Python 3.5 中使用的流程,但是我还没有看到关于我应该使用什么东西,我不应该使用的await东西或者它在哪里容易出现的描述。我是否仅需要根据“这是IO操作并应进行await编辑” 来做出最好的判断? 问题答案: 默认情况下,所有代码都是同步的。你可以使用使其异步定义函数,async def并使用来“调用”这些函数await。一个更正确的问题是“什么时候应

  • 问题内容: 我感觉好像总是被教导要使用s,并且我经常看到它们与s 混合使用,以在应该在不同页面上执行相同操作的几段代码中完成相同类型的查询。开始: 那就是我正在从事的工作: 我看到很多像: 似乎LEFT也可能是INNER,有没有抓住的机会? 问题答案: 有收获吗?是的-左联接是外联接的一种形式,而内联接是内联接的一种形式。 这是显示差异的示例。我们将从基本数据开始: 在这里,我们将看到内部联接和左