如何在sails.js中定义错误消息

 liuxiaoli8611 发布于 2023-02-12 15:03

这是我第一次使用sails,它看起来很好,但我遇到了问题,是否可以在sails模型验证中定义自定义错误消息,因为它看起来像返回的错误消息是技术性的而不是用户友好的.

谢谢

更新:https://gist.github.com/mikermcneil/8366092

1 个回答
  • 这是另一种选择:

    /**
     * Takes a Sails Model object (e.g. User) and a ValidationError object and translates it into a friendly
     * object for sending via JSON to client-side frameworks.
     *
     * To use add a new object on your model describing what validation errors should be translated:
     *
     * module.exports = {
     *   attributes: {
     *     name: {
     *       type: 'string',
     *       required: true
     *     }
     *   },
     * 
     *   validation_messages: {
     *     name: {
     *       required: 'you have to specify a name or else'
     *     }
     *   }  
     * };
     *
     * Then in your controller you could write something like this:
     *
     * var validator = require('sails-validator-tool');
     *
     * Mymodel.create(options).done(function(error, mymodel) {
     *   if(error) {
     *     if(error.ValidationError) {
     *       error_object = validator(Mymodel, error.Validation);
     *       res.send({result: false, errors: error_object});
     *     }
     *   }
     * });
     *
     * @param model {Object} An instance of a Sails.JS model object.
     * @param validationErrors {Object} A standard Sails.JS validation object.
     *
     * @returns {Object} An object with friendly validation error conversions.
     */ 
    module.exports = function(model, validationError) {
      var validation_response = {};
      var messages = model.validation_messages;
      validation_fields = Object.keys(messages);
    
      validation_fields.forEach(function(validation_field) {
    
        if(validationError[validation_field]) {
          var processField = validationError[validation_field];
          //console.log(processField);
          processField.forEach(function(rule) {
            if(messages[validation_field][rule.rule]) {
              if(!(validation_response[validation_field] instanceof Array)) {
                validation_response[validation_field] = new Array();
              }
    
              var newMessage={};
              newMessage[rule.rule] = messages[validation_field][rule.rule];
              validation_response[validation_field].push(newMessage);
            }
          });
    
        }
      });
    
      return validation_response;
    };
    

    致记:sfb_

    2023-02-12 15:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有