2011-04-27 7 views
2

CouchDB로 이동하면서 잃어 버리는 것들 중 하나는 필드의 기본값을 가질 수 있다는 것입니다. 예를 들어, SQL 데이터베이스에서 date이라는 필드를 가질 수 있으며 기본값은 now()입니다. CouchDB에서 비슷한 것을 할 수 있습니까?CouchDB 유효성 검사 기능에서 문서에 필드를 추가 할 수 있습니까?

내가 말할 수있는 것부터, 모든 생성 및 업데이트 작업에서 실행되는 유일한 코드 조각은 디자인 문서의 validate_doc_update 메서드입니다. 그러나 더미 유효성 검사를 통해 테스트 한 결과 제대로 작동하지 않습니다. 다음은 필드 newDoc.foo을 설정하려고하는 간단한 유효성 검사 기능이지만 저장되지 않습니다.

function(newDoc, oldDoc, userCtr) { 
    newDoc.foo = "bar!"; 
} 

우리는 확인하고 validate_doc_update 메소드가 호출지고 있다는 것을 확인하는, 그래서 표시 한 것을 자동 검증 기능을 사용하여 CouchDB를 문서에 필드를 추가하는 방법은 갈 수있는 방법이없는 경우. 다른 제안?

답변

3

보기를 통해 문서를 볼 때 일부보기 논리를 사용하여 기본값을 적용 할 수 있습니다.

작성한 후 (이후 변경 이후) update handler을 적용 할 수 있지만 매번 호출 할 때마다 다른 호출이 필요합니다.

삽입하기 전에 오브젝트로 삽입하는 문서를 작성하고 기본값을 적용하면 CouchDB에 작성한 내용이 이미 올바르므로이 문제를 해결할 수 있습니다.

+1

최신 버전의 CouchDB [보기에서 문서를 수정할 수 없습니다] (http://web.archiveorange.com/archive/v/oW6DzLPEoEfysNJMyaLk). –

+0

업데이트 처리기에 대한 힌트를 주셔서 감사합니다. 잘 만들어진 업데이트 핸들러는 작성 날짜와 같은 추가 필드를 추가하면서 문서를 만들고 업데이트하는 일반적인 메커니즘과 똑같이 보이고 느낄 수 있습니다. 또한 업데이트 기능에 이러한 기능을 추가하면 복제 후에 다시 실행되지 않습니다. – Pridkett

관련 문제