2017-12-01 3 views
0

몽구스 모델의 유효성 확인과 관련하여 질문이 있습니다. 나는 그걸 유용하다고 생각하지 않는다. 나는 새로운 모델을 만드는 오전 때몽구스 모델을 사용한 검증

, 내 코드는

새로운 데이터를 만드는
const model = new Comment(commentJson); 
const error = model.validateSync(); 
assert.ok(error, error.errors); 

는 검증이 어느 정도 유용하다. 그러나 기존 모델을 업데이트하는 코드를 고려하십시오.

Comment.findByIdAndUpdate(id, commentJson); 

위 코드를 사용하면 모델 유효성 검사를 수행 할 기회가 없습니다. 현재 모델을 검색하고 commentJson으로 업데이트 한 다음 모델에서 유효성 검사를 수행 할 수 있습니다. 그러나 코드는 약간 추한 것처럼 보입니다.

대신, 몽구스 유효성 검사에 의존하는 대신 내 자신의 주장문을 작성하려는 유혹을 느낍니다. 업데이트를 위해 데이터베이스를 두 번 치지 않고 mongoose로 유효성 검사를 수행 할 수있는 방법이 있습니까? 감사.

+1

은 사전 업데이트 후크가 도움이 될 수 있습니다 – sidgate

답변

1

나는 이것을 사용합니다 : 몽구스 문서를 업데이트 할 때

try { 
    let updatedComment = await Comment.findByIdAndUpdate(
    id, 
    commentJson, 
    { 
     new: true, 
     runValidators: true 
    } 
); 

    // Deal with result. 
    console.log(updatedComment); 
} catch (err) { 
    // Deal with error. 
    console.log(err); 
} 

이 모델의 스키마에 대해 유효성 검사를 실행합니다. 유효성 검사가 실패하면 catch 블록이 처리합니다.

또는 콜백과

당신이 원하는 경우 : save()create()를 호출 할 때

Comment.findByIdAndUpdate(
    id, 
    commentJson, 
    { 
    new: true, 
    runValidators: true 
    }, (err, updatedComment) => { 
    if (err) throw err; 

    console.log(updatedComment); 
    } 
); 

몽구스는 일반적으로 자동으로 유효성 검사기를 실행합니다. 나는 많은 사람들이 이전에 수동으로 검증기를 실행하는 것을 본 적이 없다고 생각합니다. 업데이트 함수의 경우 유효성 검사기는 기본적으로 해제되어 있습니다. 을 설정하면 켜집니다. herehere을 참조하십시오.

+0

감사합니다. 그것은 정말로 산뜻합니다. – vijayst