Templates 在模板内使用Meteor js中的方法调用

Templates 在模板内使用Meteor js中的方法调用,templates,meteor,methods,Templates,Meteor,Methods,我正在尝试将当前登录的用户id插入meteor集合中特定文档的数组中。我通过从服务器调用一个方法来实现这一点。在大多数情况下,除了一件事,用户id应该插入到单击按钮的当前模板中。我正在构建一个“会议聚集”系统,用户应该在其中申请加入特定的会议。因此,用户id应该插入到他们参加的每个会议中 客户: Template.eventcard.events({ 'click .applynow': function(){ Meteor.call('updatemeetswithus

我正在尝试将当前登录的用户id插入meteor集合中特定文档的数组中。我通过从服务器调用一个方法来实现这一点。在大多数情况下,除了一件事,用户id应该插入到单击按钮的当前模板中。我正在构建一个“会议聚集”系统,用户应该在其中申请加入特定的会议。因此,用户id应该插入到他们参加的每个会议中

客户:

Template.eventcard.events({
    'click .applynow': function(){
        Meteor.call('updatemeetswithuser');
    }
});
服务器代码:

Meteor.methods({
    updatemeetswithuser: function(){
        Meets.update({_str: this._str}, {$push:{users : this.userId}});
    }
});
_str:这个_str有效,因为我插入了它,所以它是mongo收藏,而不是meteor收藏。然而,问题是,无论在哪个模板中单击按钮,用户id:s总是插入到我的{{#each}}循环的第一个和同一个文档中,而不是像我希望的那样绑定到每个模板

昨天我在这里问了一个类似的问题:我可以将每个函数独立地绑定到一个特定的模板上,我不知道这是否与类似的东西有关,但可能会有所帮助


所以我想我需要做的是通过一个方法以某种方式获取模板的id。谢谢,任何意见都将不胜感激

我认为您需要传递一些参数来更新正确的记录,否则您将始终更新相同的记录,因此您的方法应该如下所示:

Meteor.methods({
  updatemeetswithuser: function(meetId){
    Meets.update({_id: meetId}, {$push:{users : this.userId}});
  }
});
我承认我的无知,但我不知道这是什么。而且我没有找到关于它的清晰文档。这似乎是mongo的默认id,但我认为如果你用meteor开发所有的应用程序,你真的不需要

在客户机中,显然您必须向方法传递正确的id

Template.eventcard.events({
  'click .applynow': function(){
    var meetId = ...; //save in your html or find another solution to get meetId
    Meteor.call('updatemeetswithuser',meetId);
  }
});

谢谢这太棒了,救了我一天!要获取id,我只需执行var meetId=this.\u id:)