[英]Meteor SimpleSchema + Methods : clicking too fast throw an error
首先,我有以下架构:
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}}
});
}
});
最后,有两个按钮“ Join
和“ Leave
:
Template.ride.events({
'click .join': function(e){
Meteor.call('joinRide', this.ride._id);
},
'click .leave': function(e){
Meteor.call('leaveRide', this.ride._id);
},
});
它工作得很好,问题是当我单击按钮的速度太快(一个接一个)时,查询似乎没有时间处理,我得到了:
客户端(以下两者):
调用方法'leaveRide'时出错:内部服务器错误[500]
调用方法'joinRide'时出错:必须提供ID [400]
服务器端(这两个):
调用方法“ leaveRide”时发生异常错误:调用“ leaveRide”时未检查()所有参数
调用方法“ joinRide”时发生异常错误:需要ID
经过数小时的调查,事实证明,单击之间的间隔时间超过500毫秒时,Easy Security Package阻止了呼叫(针对DDoS的安全性)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.