2010-05-07 3 views
2

_myappvar_myotherappvar 같은 이름의 필드를 문서에 추가하여 데이터 필드와 구별하려고했습니다. 처음에는 효과가 있었지만 이불이 불평하기 시작합니다.couchdb에서 응용 프로그램 특정 필드의 이름을 지정하는 방법

올바른 방법은 무엇입니까?

couchdb 0.9.0을 사용하고 있는데, 오래된 것일 수 있지만이 반복에서는 업그레이드 할 수 없습니다.

편집 : 내가 _*가 CouchDB를의 바르 예약되어 같아요. 다른 것을 선택할 수는 있지만 최선의 방법이 있습니까, 아니면 이것을 해결할 수 있습니까?

Edit2 : 내 응용 프로그램의 경우이 필드가 이미 사용되고 있기 때문에 다소 심합니다. 나는 어떤 상황에서 내가 일하는 부분을 지키고 미래의 분야에 대해서만 새로운 명명법을 적용 할 수 있는지 궁금합니다.

답변

2

정확합니다. CouchDB Document API, Special Fields 섹션에서 설명합니다.

최상위 필드는 _으로 시작하지 않을 수 있습니다.

CouchDB는입니다. 따라서 가장 좋은 방법은 응용 프로그램에서 가장 쉬운 방법입니다. 특정 편집에 관하여 :

  1. 하나의 아이디어 접두어 대신 _접미사을 사용하는 것입니다. 또 다른 아이디어는 내부 데이터에 대한 객체 (네임 스페이스) 인 .myapp 필드입니다. 당신도 그들을 결합 수 :

    { 
        "type": "the document type", 
        "var1": "Normal variable 1", 
        "var2": true, 
        "myapp_": { 
        "var": "Something internal", 
        "othervar": null, 
        } 
    } 
    

    지금 당신은 당신의보기지도에서 doc.myapp_.var을 참조 할 수 있습니다, 감소 등

  2. 당신은 선택할 수 있습니다. 글 머리 기호를 물고 즉시 모든 문서를 변경할 수 있습니다. 나는 당신의 앱을 모른다. 그러나 _ 접두사를 사용하여 불을 가지고 놀고 있기 때문에 나는 그것을 선호한다.

    그러나 두 가지 유형의 문서를 모두 처리 할 수 ​​있으며 두 문서를 처리하는 방법에 대해 map() 기능을 가르치기 만하면됩니다. 행운

    function(doc) { 
        if(doc.type == "the document type") { 
        if(doc._myappvar) { 
         emit(doc._id, doc._myappvar); // The old way 
        } else if(doc.myapp_) { 
         emit(doc._id, doc.myapp_.var); // The new way 
        } 
        } 
    } 
    

좋은!

관련 문제