- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个经过验证的方法:
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/
我有一个经过验证的方法: export const updateSuitClass = new ValidatedMethod({ name: 'presets.suitClass.update'
当尝试使用自动表单通过 ValidatedMethod 更新集合时,我收到错误“架构不允许_id”。 据我所知this example和 official docs我的架构不期望包含 _id 字段,并
我是一名优秀的程序员,十分优秀!