MeteorJs只允许用户发送一次输入

时间:2015-05-04 17:52:10

标签: javascript jquery node.js meteor

我正在开发一个用户可以预订课程的应用程序,我希望每个用户只能做一次课程。这是我现在的代码,希望你们能帮助我:)

 '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,并在他试图预订课程时检查他的身份是否已存在。

谢谢!

1 个答案:

答案 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()替换为您的会话变量,如果它实际上是指另一个用户。