couchDB 문서
메모리 형식: JSON
필드 설명
_id: 전역 에 있 는 유일한 식별 자 는 하나의 문 서 를 표시 하 는 데 사 용 됩 니 다. _rev: 버 전 번 호 를 수정 하여 다 중 버 전 병행 제어 (Multiversion concurrency control, MVVC) 를 실현 합 니 다. _attachments: 내장 형 첨부 파일 은 base 64 인 코딩 형식 으로 문서 의 한 필드 로 저장 합 니 다.
가장 간단 한 문서 구조
문서 에 최소한id 와rev 필드, 예 는 다음 과 같 습 니 다.
{
"_id": "5fecc0d7fe5acac6b46359b5eeefb614",
"_rev": "1-967a00dff5e02add41819138abb3284d"
}
couchDB 디자인 문서
디자인 문 서 는 특수 한 문서 로 그 ID 는 반드시디자인 / 시작.디자인 문서 의 존 재 는 CouchDB 를 사용 하여 웹 애플 리 케 이 션 을 개발 하 는 기초 이다.CouchDB 에서 웹 애플 리 케 이 션 은 디자인 문서 와 대응 합 니 다. 디자인 문서 에 다음 과 같은 특수 한 필드 를 포함 할 수 있 습 니 다.
views 는 영구적 인 보기 정 의 를 포함 합 니 다. shows 는 문 서 를 비 JSON 형식 으로 변환 하 는 방법 을 포함 합 니 다. lists 는 보기 실행 결 과 를 비 JSON 형식 으로 변환 하 는 방법 을 포함 합 니 다. validate_doc_update 는 문서 업데이트 가 올 바른 지 검증 하 는 방법 을 포함 합 니 다.
디자인 문서 구조:
{ "_id" : "_design/${docName}", "_rev" : "${revision}",
"language" : "javascript",
"views": {
...
}
"shows": {
...
}
"lists": {
...
}
"_attachments": {
...
}
}
가장 간단 한 디자인 문서 구조
{
"_id" : "_design/example",
"views" : {
"foo" : {
"map" : "function(doc){ emit(doc._id, doc._rev)}"
}
}
}
views 필드
영구적 인 보기 정 의 를 포함 합 니 다.
구체 적 인 참고 문서: couchDB 보기
쇼 필드
기본 서식
{
"_id": "_design/examples",
"shows": {
"people": "function(doc, req) { /*...*/ }"
}
}
show 방법
예제 코드:
function(doc, req) {
return {
body: "Hello World"
}
}
모든 쇼 방법 에는 두 개의 인자 가 있 습 니 다: doc 와 req 그 중에서 doc 는 요청 한 문서 ID 에 대응 하 는 문서 내용 을 표시 하고 req 는 현재 요청 과 관련 된 내용 을 표시 하 며 JSON 대상 입 니 다.이 JSON 대상 매개 변 수 는 다음 과 같 습 니 다.
body GET , undefined; POST/PUT , 。
cookie cookie 。
form (Content Type) application/x-www-form-urlencoded , JSON 。
info CouchDB 。
path , 。
query JSON 。
verb HTTP , GET/POST/PUT/DELETE 。
여기 서 주의해 야 할 것 은 요청 한 문서 ID 와 show 방법의 매개 변수 doc 의 관계 입 니 다. 구체 적 인 상황 은 다음 과 같 습 니 다.
요청 에 문서 ID 가 들 어 왔 고 데이터베이스 에 이 ID 에 대응 하 는 문서 가 존재 합 니 다. 이 경우 doc 의 값 은 이 ID 에 대응 하 는 문서 내용 입 니 다. 요청 에 문서 ID 가 들 어 왔 지만 데이터베이스 에 해당 하 는 문서 가 없습니다. 이 경우 doc 의 값 은 null 이 며, req. docId 를 통 해 이 ID 를 가 져 올 수 있 습 니 다.일반적인 행동 은 ID 가 req. docId 인 문 서 를 만 드 는 것 입 니 다. 요청 에 문서 ID 가 전송 되 지 않 았 습 니 다: 이 경우 doc 와 req. docId 의 값 은 모두 null 입 니 다.일반적인 행동 은 CouchDB 에서 ID 를 만 들 고 문 서 를 만 드 는 것 입 니 다.
show 방법 은 HTTP 응답 정 보 를 포함 한 JSON 대상 을 되 돌려 야 합 니 다.이 JSON 대상 에는 다음 필드 가 포함 되 어 있 습 니 다.
code HTTP , 200 。
headers HTTP , JSON , {"Content-Type" : "application/xml"}。
json JSON 。
body 。
base64 base64 。
HTTP 응답 내용 을 나타 내 는 json, body, base 64 는 하나만 설정 하면 됩 니 다.
접근 문법
GET /db/_design/examples/_show/people/doc_id
GET /db/_design/examples/_show/people/doc_id?format=xml&details=true
목록 필드
list 방법 은 보 기 를 비 JSON 형식 으로 변환 하 는 데 사 용 됩 니 다.보기 의 실행 결 과 는 여러 줄 의 데 이 터 를 포함 하기 때문에 list 방법 은 각 줄 의 데 이 터 를 교체 하고 각각 포맷 해 야 하기 때문에 하나의 보기 의 실행 결과 에 대해 list 방법 은 여러 번 호출 됩 니 다.list 방법의 호출 과정 은 교체 하기 전에 한 번 호출 하고 결과 의 모든 줄 데 이 터 를 한 번 호출 하 며 마지막 으로 교체 한 후에 다시 호출 하 는 것 입 니 다.
기본 서식
{
"_id": "_design/examples",
"views" {
"posts-by-date": {"map": "function(doc){ /*...*/ }"},
"posts-by-tag": {"map": "function(doc){ /*...*/ }"},
"people-by-name": {"map": "function(doc) { /*...*/ }"}
},
"lists": {
"index-posts": "function(head, req) { /*...*/ }",
"browse-people": "function(head, req) { /*...*/ }"
}
}
list 방법
모든 list 방법 에는 두 개의 인자 가 있 습 니 다: head, req
방법 예시:
function(head, req) {
var row;
start({
"headers": {
"Content-Type": "text/html"
}
});
while(row = getRow()) {
send(row.value);
}
}
접근 문법
GET /db/_design/examples/_list/index-posts/posts-by-date?descending=true&limit=10
GET /db/_design/examples/_list/index-posts/posts-by-tag?key="howto"
GET /db/_design/examples/_list/browse-people/people-by-name?startkey=["a"]&limit=10
예제 코드
:
{
"_id": "_design/example",
"views": {
"foo": {
"map": "function(doc){ emit(doc._id, doc._rev)}"
}
},
"lists": {
"index-posts": "function(head, req) {var row; start({\"headers\": {\"Content-Type\": \"text/html\"}});while(row = getRow()) {send(row.value);}}"
}
}
curl :
curl "http://127.0.0.1:5984/testdb2/_design/example/_list/index-posts/foo"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.