2011-09-28 6 views
0

몽구스에서 배열 속성을 확인하는 데 문제가 있습니다.몽구스가 배열 속성의 유효성을 검사하지 못했습니다.

다음 정의를 사용하면 내 shouldFail 메서드가 호출되지 않고 레코드가 항상 저장됩니다.

그러나 다음과 같이 유효성 검사를 설정하면 함수가 호출되고 레코드가 저장되지 않습니다.

Sense.path('definitions.english').validate (val) -> 
    console.log "Validating English" 
    console.log val 
    return false 

가능한 경우 이전 정의 스타일을 사용하는 것이 좋습니다. 나는 내 정의에서 뭔가 잘못하고 있는지 궁금해하고있다. 그것은 배열에 대한 유효성 검사를 정의하는 방법입니까?

또한 설정하는 방법이 english인지 여부가 영향을 받는지 확실하지 않습니다. 나는 단지 definitions.english = [ ]하고 있고 저장하려고합니다.

답변

2

영어로 []을 (를) 필요로하지 않습니다. coffeescript 컴파일러에서 코드를 포함 시키면 포함 시키면 잘못 렌더링됩니다. 이것이 유효성 검증이 그 형식으로 작동하지 않는 이유 일 수 있습니다. 그냥 시도해보십시오 :

definitions: 
    english: 
    type: String 
    validate: [ shouldFail, "testing" ] 
    required: true 
+0

맞습니다. Coffeescript는 내가 예상했던 것과는 다르게 나오고 있습니다. Mongoose의 배열 속성 정의에 대해서는 아직도 약간 혼란 스럽습니다. 서식 지정을위한 공간이별로 없기 때문에 제 질문을 수정하겠습니다. –

+0

기다려요. 지금 당장 생각합니다. Type 주위에 Array 표시가 필요합니다. 그래서 내 정의는'type : [String]'을 제외하고는 동일 할 것이라고 생각합니다. –

+0

JS에서 정의하고있는 경우에는 정의를 사용합니다. ({{English : {type : String, validate : [shouldFail, 'testing'], required : true}}) coffeescript는 갈 길입니다. (나는 영어로 [[]를 제거한다고 생각합니다.) 대신에 들여 쓰기를 사용하여 그것을 객체가 아닌 배열로 정의합니다. – Logos

1

나는 질문을하고 대답을 볼 수 있습니다 대답은 꽤 오래된지만, 난 아직도 더 많은 것을 정교하게 유용 할 수 있습니다 생각합니다.

you can't validate a single element of an array입니다. 대신 전체 배열에서 유효성 검사를 실행하고 필요한 경우 값을 반복합니다.

definitions: 
    english: 
    type  : [ String ] 
    validate : 

     validator : (values) -> 
     for value in values 
      if not (valid value) then return false 
     return true 

     msg  : "At least one not valid" 

    ] 

난 당신이 적어도 하나 개의 요소가 배열에 있는지 확인하고 싶었 가정 required 플래그를 설정하여 : valid 가정

은 단일 요소를 확인하는 기능입니다. 이를 확인하려면 다음과 같은 다른 유효성 검사 개체를 추가하십시오.

definitions: 
    english: 
    type  : [ String ] 
    validate : [ 
     validator : (values) -> values.length # 0 is a falsy value 
     msg  : "At least one required"     
    , 
     validator : (values) -> 
     for value in values 
      if not (valid value) then return false 
     return true 
     msg  : "At least one not valid" 
    ] 
    ] 
관련 문제