在猫鼬的自定义验证器中获取参数

时间:2020-07-21 11:15:18

标签: javascript node.js validation mongoose

在我的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参数。

我知道此功能代码将无法正常工作。因此,我需要别人的帮助,该如何在验证函数中访问该length变量。

我们将非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

也许是这样的:

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);
}