首页 > 解决方案 > 在猫鼬的自定义验证器中获取参数

问题描述

在我的express+mongo应用程序中,我使用mongoose的是数据库模式。

对于模式,我需要一个自定义验证器说“用于检查长度是否为 x”

下面是我的包含该自定义验证器的架构

var schema = new Schema({
    ...,
    contactNumber: {
        type: Number,
        validate: [
            {
                validator: hasLength,
                message: "Contact number must be 10 digits",
                length: 10
            }
        ]
    },
    ...
}

以下是自定义验证器功能:

function hasLength(str, length) {
    let pattern = "^d{" + length + "}$";
    let regex = new RegExp(pattern, 'g');

    return regex.test(str);
}

在这个验证器函数中,我想length从上述模式中访问参数。

我知道这个功能代码不能正常工作。所以我需要有人帮助我如何在验证器函数中访问该长度变量。

您的帮助将不胜感激:)

标签: javascriptnode.jsvalidationmongoose

解决方案


也许是这样的:

var schema = new Schema({
    ...,
    contactNumber: {
        type: Number,
        validate: [
            {
                validator: hasLength(10),
                message: "Contact number must be 10 digits",
            }
        ]
    },
    ...
}

const hasLength = length => str => {
   let pattern = "^d{" + length + "}$";
   let regex = new RegExp(pattern, 'g');

   return regex.test(str);
}

推荐阅读