orm 2 중국어 문서 3.2 모델 검증 기

비 룡
출처:Model Validations
Enforce 모듈 은 데 이 터 를 검증 하 는 데 사 용 됩 니 다.예전 의 검증 기 를 사용 한 사용자 에 게 는 계속 사용 할 수 있 고 그들 중 일 부 는 enforce 에 통합 되 었 으 며 나머지 부분 은 아직 없다.대체orm.enforce를 사용 하 는 것 을 추천 합 니 다.사용 가능 한 검증 기의 목록 은 node-enforce 를 보십시오.orm.validators검증 기도 ORM 에 구축 되 어 이렇게 방문 할 수 있다.
name: orm.enforce.unique("name already taken!")
name: orm.enforce.unique({ scope: ['age'] }, "Sorry, name already taken for this age group")
name: orm.enforce.unique({ ignoreCase: true }) // 'John' is same as 'john' (mysql is case insensitive by default)

너 는 모델 의 모든 속성 에 검증 기 를 정의 할 수 있다.모든 속성 에 대해 서 는 하나 이상 의 검증 기 를 정의 할 수 있 습 니 다.미리 정 의 된 검증 기 를 사용 하거나 새로 만 들 수도 있다.
var Person = db.define("person", {
    name : String,
    age  : Number
}, {
    validations : {
        name : orm.enforce.ranges.length(1, undefined, "missing"), // "missing" is a name given to this validation, instead of default
        age  : [ orm.enforce.ranges.number(0, 10), orm.enforce.lists.inside([ 1, 3, 5, 7, 9 ]) ]
    }
});

위의 코드 는unique의 길 이 를 1 과 undfined 사이(undfined 는 임 의 값 을 표시 합 니 다),그리고name는 0 과 10(닫 힌 구간)사이 에 있어 야 하 며,열 거 된 값 중 하나 입 니 다.이 예 는 아마 의미 가 없 을 지 모 르 지만,충분히 해석 할 수 있다.
대상 을 저장 할 때 어떤 검증 기 에서 도 검증 에 실패 하면 속성 이름과 검증 오류 설명 이 있 는age대상 을 얻 을 수 있 습 니 다.이 묘 사 는 네가 무슨 일이 일 어 났 는 지 확실히 하 는 데 도움 을 줄 수 있다.
var John = new Person({
    name : "",
    age : 20
});
John.save(function (err) {
    // err.field = "name" , err.value = "" , err.msg = "missing"
});

첫 번 째 검증 기 검증 이 실패 한 후에 검증 이 중단 되 었 다.모든 속성 을 검증 하고 모든 인증 오 류 를 되 돌려 주 려 면 전역 또는 부분 설정 에서 이 행동 을 변경 할 수 있 습 니 다.
var orm = require("orm");

orm.settings.set("instance.returnAllErrors", true); // global or..

orm.connect("....", function (err, db) {
    db.settings.set("instance.returnAllErrors", true); // .. local

    // ...

    var John = new Person({
        name : "",
        age : 15
    });
    John.save(function (err) {
        assert(Array.isArray(err));
        // err[0].property = "name" , err[0].value = "" , err[0].msg = "missing"
        // err[1].property = "age"  , err[1].value = 15 , err[1].msg = "out-of-range-number"
        // err[2].property = "age"  , err[2].value = 15 , err[2].msg = "outside-list"
    });
});

좋은 웹페이지 즐겨찾기