javascript - Meteor SimpleSchema + 方法 : clicking too fast throw an error

标签 javascript methods meteor

首先,我有这个架构:

Rides = new Mongo.Collection('Rides');

Rides.attachSchema(
    new SimpleSchema({
        name:{type:String},
        'passengers.$._id': {
            type: String,
            autoValue: function(){
                if(this.isUpdate && this.operator !== '$pull')
                    return this.userId;
                else
                    this.unset();
            }
        },
        'passengers.$.validate':{type:Boolean},
);

服务器端,我有这些方法:

Meteor.methods({
    leaveRide: function(_id){
        check(_id, String);
        Rides.update(_id, {
            $pull:{passengers:{
                _id:this.userId
            }}
        });
    },
    joinRide: function(_id){
        check(_id, String);
        Rides.update(_id, {
            $addToSet: {passengers: {validate:true}}
         });
    }
});

最后,两个按钮JoinLeave调用:

 Template.ride.events({
    'click .join': function(e){
        Meteor.call('joinRide', this.ride._id);
    },
    'click .leave': function(e){
        Meteor.call('leaveRide', this.ride._id);
    },
});

它工作得很好,问题是当我点击按钮太快(一个接一个)时,查询似乎没有时间处理,我得到:

客户端(其中任一):

Error invoking Method 'leaveRide': Internal server error [500]
Error invoking Method 'joinRide': ID is required [400]

服务器端(其中任一):

Exception while invoking method 'leaveRide' Error: Did not check() all arguments during call to 'leaveRide'
Exception while invoking method 'joinRide' Error: ID is required

最佳答案

经过几个小时的调查,结果发现是 Easy Security Package 在单击之间的速度超过 500 毫秒时阻止了调用(针对 DDoS 的安全性)。

参见:https://github.com/matteodem/meteor-easy-security

关于javascript - Meteor SimpleSchema + 方法 : clicking too fast throw an error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31567279/

相关文章:

android - 从静态 fragment 类调用主类中的方法

javascript - 你如何遍历 JavaScript 伪类中的所有方法,而不管它们是否被标记为可枚举?

javascript - 覆盖 Meteor 的 oauth 包

javascript - 应用重启时 meteor 自动刷新

javascript - ReactJS 调用父方法

javascript - 下拉菜单和子菜单的背景色

C# 如何从我的用户控件访问主窗体上的 setter 方法?

javascript - 将 Meteor 应用程序部署到 Galaxy 的步骤是什么?

javascript - TinyMCE 添加 bbcode

javascript - 使用 jquery 从字符串中提取 HTML