在mongoose> = 4.9.0中不推荐使用隐式异步自定义验证器(带有2个参数的自定义验证器)

zur*_*fyx 5 mongoose node.js validator.js

我正在使用猫鼬4.9.0.虽然下面的代码有效,但我收到如下警告:

(node:24769)DeprecationWarning:在mongoose> = 4.9.0中不推荐使用隐式异步自定义验证器(带有2个参数的自定义验证器).有关详细信息,请参阅http://mongoosejs.com/docs/validation.html#async-custom-validators.

我怀疑错误来自模型验证器.

const mongoose = require('mongoose');
const isEmail = require('validator/lib/isEmail');

const Schema = mongoose.Schema;

const userSchema = new Schema({
  email: {
    type: String,
    unique: true,
    required: true,
    validate: [{ validator: isEmail, msg: 'Invalid email.' }],
  },
});

module.exports = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)

我似乎唯一的自定义验证器isEmail来自validator库,它给出一个字符串值返回它是否有效.

zur*_*fyx 10

您的自定义验证器中存在一个偷偷摸摸的错误.

isEmail从函数validator库需要两个参数,即使第二个是完全可选的.

isEmail(str [, options])
Run Code Online (Sandbox Code Playgroud)

你可以通过在它上面创建一个函数来阻止mongoose看到它:

validate: [{ validator: value => isEmail(value), msg: 'Invalid email.' }]
Run Code Online (Sandbox Code Playgroud)