我正在尝试将当前登录的用户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:this_str有效,因为我插入了它,因此它是一个mongo集合而不是流星集合。但是,问题是用户id:s总是插入我的{{#each}}循环中的第一个和同一个文档中,无论单击按钮的模板是什么,而不是按照我希望的方式绑定到每个模板
昨天我在这里问了一个类似的问题:Meteor: Bind function to work for every iteration of template我可以将每个函数彼此独立地绑定到一个特定的模板,我不知道这是否与类似或不相似但可能是可以帮忙。
所以我想我需要做的是通过一个方法以某种方式获取模板的id。谢谢,任何输入都表示赞赏。
答案 0 :(得分:1)
我认为您需要传递一些参数来更新正确的记录,否则您将始终更新相同的记录,因此您的方法应如下所示:
Meteor.methods({
updatemeetswithuser: function(meetId){
Meets.update({_id: meetId}, {$push:{users : this.userId}});
}
});
我承认我的无知,但我不知道这是什么。我和我没有找到明确的文件。它似乎是mongo的默认id,但如果你用流星开发所有应用程序,我认为你真的不需要。
在客户端显然你必须将正确的id传递给方法。
Template.eventcard.events({
'click .applynow': function(){
var meetId = ...; //save in your html or find another solution to get meetId
Meteor.call('updatemeetswithuser',meetId);
}
});