유일한 방법은 userCtx.name
값이 validate_doc_update function 생각 동일하여 updated_by
필드를 강제하는 것입니다 :
function(newdoc, olddoc, userctx, secobj){
if (newdoc.updated_by != userctx.name)
throw({"forbidden": "`updated_by` field should match real updater user name"})
}
예상 한 방식으로 데이터를하도록 요구 (디자인을 제외한) 모든 문서 콘텐츠를 제어 할이 기능 .
이 시점에서 중지 할 수 있지만 결함이 하나 있습니다. 모든 클라이언트는이 필드를 수동으로 설정해야합니다. 그것은 어색하고 그들을 "긴장시키지"못하게합니다. 이 문제를 해결하기 위해 CouchDB는 서버 측에서 비즈니스 로직의 일부를 클라이언트 구현에서이 지식을 제거하도록 설정할 수있는 update functions을 제공합니다. 그래서 업데이트 기능은 수도는 다음과 같습니다
function(doc, req){
if (!doc){ // new doc
doc = JSON.parse(req.body);
}
doc.updated_by = req.userCtx.name;
return [doc, {"json": {"status": "ok"}}
}
그는 올바른 방법으로 사용하면 설정 updated_by
필드를 보자. 또한 더 많은 메타 필드 (예 : userCtx.peer
클라이언트 IP 주소 보유)를 추가하여이 기능을 확장 할 수 있으며 클라이언트가 메타 필드를 사용하면 메타 데이터 변경 사항에 대한 업데이트가 필요하지 않습니다.
그러나 서비스 사용자에 대해 몇 가지 예외를 제공해야하거나 유효성 검사 기능이 사용자 이름 updated_by
값과 다른 모든 문서를 거부하므로 CouchDB 노드간에 복제가 손상 될 수 있습니다.
나는 꽤 두렵다. 나는 CrouchDB에 꽤 익숙하다! –
업데이트 된 게시물을 더 자세히 보려면, 죄송합니다. (: – Kxepal
Perfect :) Thanks! –