gpt4 book ai didi

javascript - ValidatedMethod 中的 Meteor this.unblock

转载 作者:行者123 更新时间:2023-12-03 06:44:06 26 4
gpt4 key购买 nike

我有一个经过验证的方法:

export const updateSuitClass = new ValidatedMethod({
name: 'presets.suitClass.update',
validate: new SimpleSchema({
_id: { type: String },
rankClass: { type: String },
suitClass: { type: String },
}).validator(),
run({ _id, rankClass, suitClass }) {
const userId = Meteor.userId();
if (userId) {
const lookUpPreset = Presets.findOne({ _id });
if (userId === lookUpPreset.owner) {
Presets.update(_id, { $set: { [`${rankClass}.${suitClass}`]: !lookUpPreset[rankClass][suitClass] } });
} else {
throw new Meteor.Error('not-authorized', 'Please don\'t update another user\'s preset.');
}
} else {
throw new Meteor.Error('not-authorized', 'Please login to update your preset.');
}
},
});

在单击事件(在列表中的项目上并切换其旁边的复选标记以指示已选中)时调用该函数以保存用户配置设置的状态。问题是,它会在用户点击、点击时被调用,因此它会被频繁调用。

第一个问题,对服务器进行如此多的方法调用来一次更新一部分是不是很糟糕?我应该只放一个保存按钮(哎呀!)并进行一次批量更新吗?

第二个问题,如果我要保留相同的方法代码,但添加 this.unblock 或 Meteor.defer,我该如何对经过验证的方法执行此操作?我尝试将它放在运行之后、运行之前、整个 block 之前......

你们能帮忙吗?

最佳答案

First question, is it bad to make so many method calls to server to update a portion at a time? Should I just put a save button (ew!) and do a single mass update?

如果您想避免单个用户的大量点击,请使用 ddp-rate-limiter package并为您的方法创建规则。使用此软件包,您可以将服务器上的调用限制在一个时间段内。

Second question, if I were to keep the same method code as is but add a this.unblock or Meteor.defer, how do I do that to a validated method? I tried putting it after run, before run, before the whole block...

ValidatedMethod run 函数的工作方式与方法函数相同。因此,您只需在 run 函数中添加 this.unblock 即可。

希望对你有帮助!

关于javascript - ValidatedMethod 中的 Meteor this.unblock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37825460/

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