55

ユーザー用のマングース スキーマ (UserSchema) があり、電子メールの構文が正しいかどうかを検証したいと考えています。私が現在使用している検証は次のとおりです。

UserSchema.path('email').validate(function (email) {
  return email.length
}, 'The e-mail field cannot be empty.')

ただし、これはフィールドが空かどうかのみをチェックし、構文はチェックしません。

再利用できるものは既に存在しますか、それとも独自のメソッドを考え出してそれを検証関数内で呼び出す必要がありますか?

4

8 に答える 8

120

スキーマでの検証にmatchまたはvalidateプロパティを使用することもできます

var validateEmail = function(email) {
    var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    return re.test(email)
};

var EmailSchema = new Schema({
    email: {
        type: String,
        trim: true,
        lowercase: true,
        unique: true,
        required: 'Email address is required',
        validate: [validateEmail, 'Please fill a valid email address'],
        match: [/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/, 'Please fill a valid email address']
    }
});
于 2014-06-13T22:48:04.177 に答える
79

入力のサニテーションにバリデーターを使用していますが、これは非常にクールな方法で使用できます。

インストールしてから、次のように使用します。

import { isEmail } from 'validator';
// ... 

const EmailSchema = new Schema({
    email: { 
        //... other setup
        validate: [ isEmail, 'invalid email' ]
    }
});

御馳走を働き、うまく読みます。

于 2015-02-08T16:16:10.460 に答える