使用 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;
},
...
这有效,但速度很慢。UI 不会像您Movies.insert()
在客户端调用时那样立即更新。文档表明,要纠正问题,您可以在客户端创建存根:
在客户端调用方法定义了与同名服务器方法关联的存根函数。如果您不想,您不必为您的方法定义存根。在这种情况下,方法调用就像其他系统中的远程过程调用一样,您必须等待来自服务器的结果。
但是这些存根应该是什么样子?它应该基本上看起来与服务器端方法相同吗?如果是这样,有什么意义?我正在寻找对 的用途和目的Meteor.methods()
、存根的要点/用途及其实现的更全面的解释。
编辑:大卫格林斯潘帮助澄清了 Meteor.methods() 和流星谈话上的存根的使用。