2010-12-22 2 views
2

아마도 나는 명백한 doco에서 그것을 놓쳤을 것입니다.하지만 CouchRest를 사용하는 db에 문서가 있는지 확인하는 방법을 찾을 수 없습니다.CouchRest - 문서 ID가 존재하는지 확인

나는 db.get(id)을 시도했으나 내 응용 프로그램에서는 404를 던졌습니다. 주변을 둘러 보려고 시도하는 것은 어리석은 것처럼 보입니다.

"이 ID가있는 경우 -> 업데이트, 다른 -> 생성"이라고하는 간단한 방법이 있습니까?

답변

2

빠른 답변 - 아니요.

기본적으로 소파에 저장하거나 업데이트 할 수 없습니다. 기존 문서를 업데이트하려면 개정 번호가 필요하므로 먼저 확인해야합니다. 여기서 404를 처리해야합니다.

def save_or_create(db, doc) 
    begin 
    rev = db.get(doc['_id']) 
    doc['_rev'] = rev 
    db.save_doc(doc) 
    rescue RestClient::ResourceNotFound => nfe 
    db.save_doc(doc) 
    end 
end 

안된하지만, 근접해야합니다 :

더 도움이 될하기 위해, 나는 아마 다음과 같은 방법을 사용하십시오. 이전 스태커 의견에 따라

0

완벽하게 작동 기능 (내가 추가 [ '_rev는'] 쿼리합니다) :

def save_or_create(db, doc) 
    begin 
     rev = db.get(doc['_id'])['_rev'] 
     doc['_rev'] = rev 
     db.save_doc(doc) 
    rescue RestClient::ResourceNotFound => nfe 
     db.save_doc(doc) 
    end 
end 
2

을 내가 CouchDB를 update API (> = 0.10) 문제가있는 경우에 대한 생성 - 또는 -를 사용하는 것이 좋습니다 최신 정보. 다음 $DB/_design/$DESIGN_NAME/_update/in_place

POST 또는 $DB/_design/$DESIGN_NAME/_update/in_place/$DOC_ID에 PUT : 그냥 그렇게처럼 디자인합니다. CouchRest가 빌드 된 베어 메탈 RestClient를 사용하는 간단한 케이스입니다.