2015-05-07 4 views
0

Я совершенно застрял в моих РСУБД способов мышления и, один щеколда время прохождения ограниченных учебники и руководства, чтобы получить мою голову вокруг NoSQLcouchDB - как отображать больше, чем ключ/значение?

Я создал базу данных bookmarks в Cloudant и создал два документа, как это:

{ 
    "_id": "3d609bd2689639afc2520f17d8f4c883", 
    "_rev": "2-7227c3e1350f2d4f67f62f830b3f331e", 
    "title": "bing homepage", 
    "url ": "http://www.bing.com", 
    "tags": [ 
    "search", 
    "public" 
    ], 
    "dateadded": [ 
    2015, 
    5, 
    6 
    ] 
} 

{ 
    "_id": "79cd702a5e23b80f09664862b5cbb918", 
    "_rev": "1-f4428cbc76b31ec93a2b438cb6de6bb8", 
    "title": "google homepage", 
    "url ": "http://www.google.com", 
    "tags": [ 
    "search", 
    "private" 
    ], 
    "dateadded": [ 
    2015, 
    5, 
    7 
    ] 
} 

Затем я создал вид документа, как это:

function (doc) { 
     emit(doc.title, doc.url, doc.tags); 
} 

я ожидал, чтобы получить результат с тремя атрибутами, указанными в I функции карты, но вместо этого я получаю й является:

{"total_rows":2,"offset":0,"rows":[ 
    {"id":"3d609bd2689639afc2520f17d8f4c883","key":"bing homepage","value":null}, 
    {"id":"79cd702a5e23b80f09664862b5cbb918","key":"google homepage","value":null} 
]} 

У меня есть две проблемы:

  1. Почему бы мое значение быть пустым? Я удалил doc.tags мышление, может быть, я могу указать только ключ и значение, но даже тогда он все равно возвращает doc.url как value:null
  2. Как получить мои объекты в массиве результатов, чтобы они содержали те же атрибуты, которые я излучал в функции карты?

ответ

4

1. у вас есть место после "URL ->". Удалите его, и он будет работать.

2.emit принимает только два параметра, но вы можете сделать что-то вроде:

function(doc) { 
    emit(doc.title, [doc.url, doc.tags]); 
} 

Или еще лучше:

function(doc) { 
    emit(doc.title, {"url": doc.url, "tags": doc.tags}); 
} 

Первый взгляд даст вам:

{"total_rows":2,"offset":0,"rows":[ 
    {"id":"86d091d6ac800d27a6fb388a0900113d","key":"bing homepage","value":["http://www.bing.com",["search","public"]]}, 
    {"id":"86d091d6ac800d27a6fb388a09001692","key":"google homepage","value":["http://www.google.com",["search","private"]]} 
]} 

Второй:

{"total_rows":2,"offset":0,"rows":[ 
    {"id":"86d091d6ac800d27a6fb388a0900113d","key":"bing homepage","value":{"url":"http://www.bing.com","tags":["search","public"]}}, 
    {"id":"86d091d6ac800d27a6fb388a09001692","key":"google homepage","value":{"url":"http://www.google.com","tags":["search","private"]}} 
]} 
+0

спасибо за это. – tim

Смежные вопросы