Yanshijie-EL / egg-swagger-doc

swagger-ui for egg
MIT License
196 stars 63 forks source link

contract里的自定义类型覆盖了validate上定义的自定义类型检查 #30

Open jasine opened 5 years ago

jasine commented 5 years ago
// app.js
  app.validator.addRule('ISOTime', (rule, value) => {
    if (!moment(value, moment.ISO_8601).isValid()) {
      return 'time must be UTC ISO8601 format';
    }
  });

定义了类型之后设置为定义的类型后从ctx.rule.rule里取到的type变成了object,validate上的校验没法继续了

Yanshijie-EL commented 5 years ago

这个是你按照egg-validate, 自定义的一个规则。你是直接在contract中这么使用了这个规则吗?你是怎么用的? 像这种自定义的规则,最好参考egg文档中的去使用。现在的插件中还没有去识别这种自定义的规则。或者你可以通过正则format去做验证。

jasine commented 5 years ago

@Ysj291823 是的,是按egg-validate的文档添加的自定义规则,想在contract里,这样只用写一遍了,能支持自定义规则的特性吗

Yanshijie-EL commented 5 years ago

可以的

jasine commented 5 years ago

@Ysj291823 谢谢

Yanshijie-EL commented 5 years ago

这个我要在考虑一下,因为我想在定义contract的时候加个标记去做这个,这里的自定义规则应该只是针对基础类型,复杂类型的话就会有问题了

Yanshijie-EL commented 5 years ago

自定义验证规则,应该是针对基础类型的,添加自定义规则不能把它当成类型去看待。我的想法是在contract定义的时候,新增一个key去加入这个规则