아마도 나는 명백한 doco에서 그것을 놓쳤을 것입니다.하지만 CouchRest를 사용하는 db에 문서가 있는지 확인하는 방법을 찾을 수 없습니다.CouchRest - 문서 ID가 존재하는지 확인
나는 db.get(id)
을 시도했으나 내 응용 프로그램에서는 404를 던졌습니다. 주변을 둘러 보려고 시도하는 것은 어리석은 것처럼 보입니다.
"이 ID가있는 경우 -> 업데이트, 다른 -> 생성"이라고하는 간단한 방법이 있습니까?
아마도 나는 명백한 doco에서 그것을 놓쳤을 것입니다.하지만 CouchRest를 사용하는 db에 문서가 있는지 확인하는 방법을 찾을 수 없습니다.CouchRest - 문서 ID가 존재하는지 확인
나는 db.get(id)
을 시도했으나 내 응용 프로그램에서는 404를 던졌습니다. 주변을 둘러 보려고 시도하는 것은 어리석은 것처럼 보입니다.
"이 ID가있는 경우 -> 업데이트, 다른 -> 생성"이라고하는 간단한 방법이 있습니까?
빠른 답변 - 아니요.
기본적으로 소파에 저장하거나 업데이트 할 수 없습니다. 기존 문서를 업데이트하려면 개정 번호가 필요하므로 먼저 확인해야합니다. 여기서 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
안된하지만, 근접해야합니다 :
더 도움이 될하기 위해, 나는 아마 다음과 같은 방법을 사용하십시오. 이전 스태커 의견에 따라완벽하게 작동 기능 (내가 추가 [ '_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
을 내가 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를 사용하는 간단한 케이스입니다.