环回自定义验证

时间:2016-07-26 08:32:11

标签: node.js validation loopback

我试图在我的模型中使用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模型的后代,当我尝试使用其他错误字段(例如重复电子邮件)创建模型时,响应包含与我的检查关联的错误消息。我做错了还是这个错误?

1 个答案:

答案 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();
        });
    }

};