Tome cuidado, se você usar set e validate em sua definição de esquema, o conjunto será executado primeiro. Se estiver retornando com uma string vazia, por exemplo, a validação não será executada e, portanto, não pode bloquear a criação do documento.
Então isso é RUIM, o validador NÃO rodará, porque set retorna com uma string vazia.
var mongoose = require('mongoose');
var schema = new mongoose.Schema({
phone: {
type: String,
validate: function(_phone) {
_phone = _phone.replace('+', '');
return !!(phoneValidator(_phone, 'HUN').length);
},
set: function(_phone) {
_phone = _phone.replace('+', '');
return phoneValidator(_phone, 'HUN')[0];
}
}
}