couchdb просмотров / уменьшить - PullRequest
1 голос
/ 06 июля 2011

У меня есть 2 вида документов: пользовательские документы, в которых хранятся данные учетной записи, и документы, в которых хранится дополнительная информация о компании пользователя

например:

UserDocs:

{ id : ABC
, name : "user1"
, active : false
, type : "user"
}

{ id : XYZ
, name : "user2"
, active : true
, type : "user"
}

компания:

 { id : ...
  , name : "company1"
  , owner : "ABC"
  , type : "company"
  }

{ id : ...
, name : "company2"
, owner : "XYZ"
, type : "company"
}

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

Какой лучший способ сделать это? я могу использовать функции уменьшения? любые примеры будут оценены

Ответы [ 3 ]

1 голос
/ 07 июля 2011

Вы можете попытаться сделать это, имея денормализованную базу данных для хранения документов различного типа (с атрибутом типа в каждом документе для отличия одного документа от другого) и использования сопоставления представления .

0 голосов
/ 12 июля 2011

Я использую это http://wiki.apache.org/couchdb/Formatting_with_Show_and_List, чтобы преобразовать мой результат представления и построить JSON, который выглядит как стандартный вывод представления, код выглядит примерно так:

, на мой взгляд, я толькоизлучать пользователей, которые являются активными

 while(row = getRow()) {
    if(row.value.type=="user") 
      active.push(row.value.id)
    if(row.value.type=="companies")
      companies.push(row)
 }
 for(var i = 0; i < companies.length; i++){
   if(active.indexOf(companies[i].value.owner) != -1)
     res.push(companies[i])
 }
 send('{\"total_rows\":'+companies.length+',\"rows\":[')
 for(var i = 0; i < res.length;i++) {
  send(toJSON(res[i]))
  if(i+1 < res.length)
    send(',')
  }
 send(']}')

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

0 голосов
/ 07 июля 2011

Как видите, у меня есть атрибут type в каждом документе.Во всяком случае, я решил это с помощью функции списков.Возможно, это не лучший способ сделать это, но пока что он отлично работает в моем случае.Я, конечно, взгляну на сопоставление представлений, но это немного запутанно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...