я не уверен, подходит ли заголовок вопросов, если вы знаете лучший, дайте мне знать;) Я просто назвал его так, потому что я думаю, смогу ли я решить свою проблему с помощью пользовательской функции сокращения.
У меня есть два типа объектов:
Транспортные средства:
{
"id": "1G1JC5444R7252367",
"type": "Vehicle"
}
Пользователи:
{
"company": "companyname",
"type": "User",
"parts": [
{
"company": "companyname",
"id": "1G1JC5444R7252367",
"active": true
},
{
"company": "companyname",
"id": "1G1135644R7252367",
"active": false
}
]
}
Я хочу View, который возвращает мне все автомобили определенной компании. Но компания хранится только в объекте User.
Вот как далеко я продвинулся в mapfunction:
function (doc, meta) {
if(doc.type == 'User'){
if(doc.parts){
Array.prototype.contains = function ( needle ) {
for (var i in this) {
if (this[i] == needle) return true;
}
return false;
};
var ids = new Array(doc.parts.length);
for(var k in doc.parts){
if(doc.parts[k].active) {
if(!vins.contains(doc.parts[k].id)) {
if (doc.parts[k].company && doc.parts[k].id ) {
ids.push(doc.parts[k].id);
emit(doc.parts[k].company, doc.parts[k].id);
}
}
}
}
}
}
}
Но это возвращает мне только компанию в качестве ключа и идентификатор автомобиля в качестве значения. Итак, я получаю документ пользователя. Могу ли я каким-то образом снова просмотреть документы в функции карты и получить все автомобили в соответствии с идентификаторами в моем массиве идентификаторов?
Сохранение компании в самой машине также нежелательно, потому что компания — это не компания самих автомобилей, а компания запчастей.
Спасибо за любую помощь вперед.