我试图在我的模型中使用validate()来验证POST中传递的参数是否包含相关模型的有效ID。这是我在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();
};
});
};
});
};
Person是User模型的后代,当我尝试使用其他错误字段(例如重复电子邮件)创建模型时,响应包含与我的检查关联的错误消息。我做错了还是这个错误?
答案 0 :(得分: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();
});
}
};