2015-10-13 5 views
0

Как я могу выполнить validate по пути Mongoose, но возвращать более подробное сообщение об ошибке? В приведенном ниже примере есть четыре возможных ошибки, которые я хотел бы вернуть. Хотя я их регистрации на консоли, я предпочел бы отправить их обратно, как ошибка, а не просто «Invalid размер файла»:Verbose ошибки проверки Мангуста?

schema.path('size').validate(function (size) { 

    if (typeof size == 'undefined' || size == null) { console.log('no size supplied'); return false; } 
    if (typeof size != 'number') { console.log('size not a number'); return false; } 
    if (size < 0) { console.log('size is negative'); return false; } 
    if (Math.floor(size) != Number(size)) { console.log('size is decimal'); return false; } 

    return true; 

}, 'Invalid file size'); 

ответ

1

Вы можете объединять несколько validate звонки по тому же пути и дать им каждый их собственное сообщение об ошибке:

schema.path('size') 
    .validate(function (size) { 
     return !(typeof size == 'undefined' || size == null); 
    }, 'no size supplied') 
    .validate(function (size) { 
     return (typeof size == 'number'); 
    }, 'size not a number') 
    .validate(function (size) { 
     return (size >= 0); 
    }, 'size is negative') 
    .validate(function (size) { 
     return (Math.floor(size) == Number(size)); 
    }, 'size is decimal'); 
+0

Прохладный! Но должны ли последующие оценки терпеть неудачу на «истинных» или «ложных»? Например, вы возвращаете ошибку «размер не число», когда 'typeof size == 'number''. –

+0

Ошибка проверки подтверждается функцией, возвращающей 'false'. Я перевернул каждую из ваших булевых проверок, чтобы сделать этот пример. Поэтому, если 'typeof size == 'number'' возвращает' false', тогда 'size' не является числом, и вы получаете ошибку проверки размера« не число ». – JohnnyHK

+0

Ах, ты прав. Двойной отрицательный для первого предмета бросил меня на петлю. Любите цепочку. :) –

Смежные вопросы