Javascript MongoDB防止$inc溢出或下溢
在我的Meteor应用程序中,我有一种方法可以调整客户端某些元素的数量,并使用Javascript MongoDB防止$inc溢出或下溢,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,在我的Meteor应用程序中,我有一种方法可以调整客户端某些元素的数量,并使用$inc保持同步 'item.update.qty'(id, qty) { // SECURITY validation here const modifier = { $inc: { qty } }; Items.update(id, modifier); } 虽然我验证了quantity不能将给定项设置为负值或超出某个限制,但服务器方法不会限制任何人使用无效值直接调用该方法。由于该方法
$inc
保持同步
'item.update.qty'(id, qty) {
// SECURITY validation here
const modifier = {
$inc: { qty }
};
Items.update(id, modifier);
}
虽然我验证了quantity不能将给定项设置为负值或超出某个限制,但服务器方法不会限制任何人使用无效值直接调用该方法。由于该方法仅依赖于项目id
和qty
进行调整,因此我丢失了当前值的信息
是否可以将MongoDB中的字段值钳制到给定的最小/最大边界?如果可以,让简单模式为您检查。例如:
ItemsSchema = new SimpleSchema({
qty: {
type: Number,
min: 0,
max: 100
}
});
可能是这样的,MongoDB中不可能钳制字段值,我必须简单地拒绝查询并以静默方式返回?对,但如果需要,您仍然可以通过查看文档是否更新来检测案例并标记错误。不,这是一个有状态的回答。这种验证必须是无状态的和原子的;验证必须在MongoDB一侧。正如我所提到的,我已经进行了客户端和服务器端验证,但这不能保证模型不会被同时修改,并进入无效状态。