我正在开发一个用户可以预订课程的应用程序,我希望每个用户只能做一次课程。这是我现在的代码,希望你们能帮助我:)
'click #book': function(e,tmpl){
if($.inArray(Session.get('userID'), Courses.find({_id: this._id}, {fields:{attendees: 1}})) === -1){
console.log('You have already booked this course');
}else{
Courses.update(this._id, {$push: {attendees: Session.get('userID')}});
Courses.update(this._id, {$inc: {numberPlaces: -1}});
console.log('You have booked the course');
}
}
正如您所看到的,我在集合中记录了用户的ID,并在他试图预订课程时检查他的身份是否已存在。
谢谢!
答案 0 :(得分:0)
如果事件处理程序中的上下文是课程文档,那么您可以这样做:
if (_.contains(this.attendees, Meteor.userid()))
console.log('Already booked!');
否则,您可以在选择器中进行检查:
if (Courses.findOne({_id: this._id, attendees: Meteor.userid()}))
console.log('Already booked!');
将Meteor.userid()替换为您的会话变量,如果它实际上是指另一个用户。