2015-11-21 4 views
1

В моей модели пользователя у меня есть что-то вроде этого:пользовательские ошибки в Sails ОРМ (ватерлинии) обратный вызов

register: function(data, next) { 
    User.findOne({email:data.email}).exec(function findOneUserCB(err, user) { 
     if (!err && user) { 
      return next(new Error('Email already exist.')); 
     } 
     // other things 
    }); 
} 

Я в основном пытаюсь вернуть пользовательскую ошибку, когда пользователь находится, но там нет ни одного другая ошибка от ватерлинии. Но это не работает, паруса жалуются, что TypeError: Cannot call method 'toString' of undefined.

Так что я пытался подражать ошибку ватерлинии:

//... 
var error = { 
    code: 'E_UNIQUE', 
    details: 'Invalid', 
    model: 'user', 
    invalidAttributes: { 
     hase: [] 
    }, 
    status: 400 
} 
return next(error); 
//... 

Это работает, но он чувствует себя очень хака. Разве это не лучший способ передать пользовательскую ошибку из обратного вызова запроса? Я не мог найти никакой документации по этой теме

ответ

0

Вы можете попробовать что-то вроде этого

register: function(data, next) { 
    User.findOne({email:data.email}).exec(function findOneUserCB(err, user) { 
    if(user){ 
     var alreadyExists = new Error(); 
     alreadyExists.message = require('util').format('User already exists'); 
     alreadyExists.status = 400; 
     cb(alreadyExists); 
    } 
    // other things 
});