thinkjs / thinkjs

Use full ES2015+ features to develop Node.js applications, Support TypeScript.
https://thinkjs.org/
MIT License
5.31k stars 616 forks source link

Logic层校验问题的一些疑惑和建议 #895

Closed stylehuan closed 7 years ago

stylehuan commented 7 years ago

如题

ENV

OS Platform:

Node.js Version:8.4.0

ThinkJS Version:3.0.0

code

this.allowMethods = 'post';
        // // 定义规则
        let rules = {
            userName: {
                aliasName: '用户名',
                string: true, // 字段类型为 String 类型
                required: true // 字段必填
            }
        };

error message

// your error message here

more description

stylehuan commented 7 years ago

目前的做法是在对应的fail中根据返回的msg重写.

lizheming commented 7 years ago

上面的 allowMethods 是无效的,必须要使用 this.rules

这句实在是没看懂,this.allowMethods 是可以正常使用的,你是想说 rules 校验无效的话如果是不使用 this.rules 赋值的话需要自己手动调用 this.validate(rules)

目前的做法是在对应的fail中根据返回的msg重写。

目前只有 allowMethods 的错误被写死了没办法重写,validate 相关的错误可以参考 自定义错误信息 进行重写。

所有rule里面多条验证规则的error都是一样的,统一返回config下validateDefaultErrno,如何进行细节区分?

一般来说所有的校验错误都是应该是相同类型的,这样前端处理起来也比较方便。而且不知你以什么维度去区分错误号,如果是根据不同的校验规则不同的错误号的话,那多个校验规则报错你如何处理?当然如果硬是要区分的话可以自行调用 this.validate(rules) 方法后根据 this.validateErrors 的返回来做判断,然后自行调用 this.fails(validateErrno, errMsg, this.validateErrors) 返回结果。

lushijie commented 7 years ago

ping @stylehuan

lushijie commented 7 years ago

Close the issue for no responding.