Вернуть массив Sequelize из строку или массив строк после фильтрации


Моя главная забота-если это наиболее эффективный способ фильтрации, и впоследствии искать, три типа значений.

Вот мои вспомогательные методы и их тип возврата данных:

_.email.isValidText(string) : boolean
_.strings.isValid(string) : boolean
_.strings.isDigits(string) : boolean
_.uuid.isValidUid(string) : boolean
_.strings.toLowerCase(string || string[]) : string || string[]

Я пытаюсь проверить три типа значений:

SMTP/Email Address
10-digit Phone Number
prefixed 10-digit Phone Number (uid.xxxxxxxxxx)

В _d мягкий удалить поле (timestamp), который указывает, когда / если строка была удалена.

function getByAddress (valueOrValues, done) {
    valueOrValues = [].concat(valueOrValues).filter(_.strings.isValid).map(_.strings.toLowerCase);
    var email = valueOrValues.filter(_.email.isValidText);
    var outgoing = valueOrValues.filter(_.strings.isDigits);
    var incoming = valueOrValues.filter(function(v){
        var parts = v.split('.');
        return (parts.length === 2 && _.uuid.isValidUid(parts[0]) && _.strings.isDigits(parts[1]));
    });
    var valid = [].concat(email, outgoing, incoming);
    var invalid = valueOrValues.filter(function(v){
        return (valid.indexOf(v) < 0);
    });

    if (invalid.length > 0) { return done('create : invalid values supplied'); }

    models.mailbox_address.findAll({
        where : {
            address     : { $in : [].concat(email, outgoing, incoming) },
            _d          : { $eq : null },
        }
    })
    .then(function(items){
        return done(null, items);
    })
    .catch(function(err){
        return done(err);
    });
}


343
-1
задан 7 февраля 2018 в 07:02 Источник Поделиться
Комментарии