限制 mongo 模式中的数字

Posted

技术标签:

【中文标题】限制 mongo 模式中的数字【英文标题】:Restricting numbers in mongo schema 【发布时间】:2019-03-12 13:32:10 【问题描述】:

我的 mongoose 模型中有一个用于账单的“到期”字段。该字段表示一个月中的某一天,一个从 1 到 31 的数字。

如何更改此验证以防止接受高于 31 的数字?

due: 
    type: Number,
    required: true,
    validate: 
      validator: function (v) 
        return /^(3[01]|[12][0-9]|[1-9])/.test(v)
      ,
      message: props => `$(props.value) is not a valid calendar day`
    
  

【问题讨论】:

【参考方案1】:

您的regex 无效。如果您输入 33,它仍然会匹配第一个 3 等。

试试:/(1|2)([0-9])|(3)(0|1)|^([0-9])1$/.test(v)

due: 
    type: Number,
    required: true,
    validate: 
      validator: function (v) 
        return /(1|2)([0-9])|(3)(0|1)|^([0-9])1$/.test(v)
      ,
      message: props => `$(props.value) is not a valid calendar day`
    
  

您可以test the regEx here,也可以查看详细说明。

【讨论】:

以上是关于限制 mongo 模式中的数字的主要内容,如果未能解决你的问题,请参考以下文章

你如何告诉 Mongo 在限制结果之前对集合进行排序?

mongo 正则表达式查询是不是有字符限制,如果正则表达式搜索字符串超过该限制,则会引发错误

Mongo:将返回的记录限制为切片的增量计数

移动端web页面input限制只能输入数字

如何限制 Swift 中文本字段中的数字?

如何限制Android中的输入数字长度?