gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:07:42 28 4
gpt4 key购买 nike

首先,我有这个架构:

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com