由於某種原因
validate: [ isEmail, 'Invalid email.']
與validate()
測試不能很好地發揮作用。
const user = new User({ email: 'invalid' });
try {
const isValid = await user.validate();
} catch(error) {
expect(error.errors.email).to.exist; // ... it never gets to that point.
}
但貓鼬4.x的(可能爲舊版本的工作太)具有攜手與單元測試的其他選擇。
單驗證:
email: {
type: String,
validate: {
validator: function(value) {
return value === '[email protected]';
},
message: 'Invalid email.',
},
},
多重驗證:
email: {
type: String,
validate: [
{ validator: function(value) { return value === '[email protected]'; }, msg: 'Email is not handsome.' },
{ validator: function(value) { return value === '[email protected]'; }, msg: 'Email is not awesome.' },
],
},
如何驗證電子郵件:
我的建議:把它留給專家誰已經投入上百幾個小時建成適當的驗證工具。(已經在here回答爲好)
npm install --save-dev validator
import { isEmail } from 'validator';
...
validate: { validator: isEmail , message: 'Invalid email.' }
真棒!我也不知道test()方法。 – Tamas
您應該在函數之外定義regex以獲得更好的性能。 – Killah
該正則表達式無法驗證一些有效的電子郵件,例如那些包含左側加號的電子郵件。 –