Javascript MongoDB防止$inc溢出或下溢

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不能将给定项设置为负值或超出某个限制,但服务器方法不会限制任何人使用无效值直接调用该方法。由于该方法

在我的Meteor应用程序中,我有一种方法可以调整客户端某些元素的数量,并使用
$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一侧。正如我所提到的,我已经进行了客户端和服务器端验证,但这不能保证模型不会被同时修改,并进入无效状态。