2016-07-26 57 views
0

我想在我的模型中使用validate()以驗證在POST中傳遞的參數是否包含相關模型的有效標識。下面是我在我的Person.js文件編寫的代碼:環回定制驗證

'use strict'; 

module.exports = function(Person) { 
    Person.validate('countryId', function(err) { 
    var Country = Person.app.models.Country; 
    var countryId = this.countryId; 
    if (!countryId || countryId === '') 
     err(); 
    else { 
     Country.findOne({where: {id: countryId}}, function(error, result) { 
     if (error || !result) { 
      err(); 
     }; 
     }); 
    }; 
    }); 
}; 

人是用戶模型的後代,當我嘗試創建與其他誤碼場模型(例如像重複的電子郵件),那麼響應包含錯誤與我的支票相關的消息。我做錯了什麼或者這是一個錯誤?

回答

0

您需要使用異步驗證,例如:

'use strict'; 

module.exports = function(Person) { 

    Person.validateAsync('countryId', countryId, { 
     code: 'notFound.relatedInstance', 
     message: 'related instance not found' 
    }); 

    function countryId(err, next) { 
     // Use the next if countryId is not required 
     if (!this.countryId) { 
      return next(); 
     } 

     var Country = Person.app.models.Country; 

     Country.exists(this.countryId, function (error, instance) { 
      if (error || !instance) { 
       err(); 
      } 
      next(); 
     }); 
    } 

};