Я пытаюсь вернуть результат, отфильтрованный методом заполнения
Схема для коллекции
{
myObjects: [{
obj: { type: Schema.ObjectId, ref: myObject }
}]
}
Схема для моего объекта
{
name: { type: String },
active: { type: Boolean }
}
So
.find().populate('myObjects.obj')
Это возвращает такие результаты, как так
[
{ myObjects:
[
{ obj: { name: 'Adam', active: true } },
{ obj: { name: 'Stacy', active: false } },
{ obj: { name: 'James', active: false } }
]
},
{ myObjects:
[
{ obj: { name: 'James', active: false } }
]
},
{ myObjects:
[
{ obj: { name: 'Adam', active: true } }
]
},
{ myObjects:
[
{ obj: { name: 'Adam', active: true } },
{ obj: { name: 'James', active: false } }
]
}
]
В этот момент я хочу сказать: «Показывать только те, где активны: правда»
so I do...
.find().populate({ path: 'myObjects.obj', match: { active: true })
За исключением того, что это возвращает следующее
[
{ myObjects:
[
{ obj: { name: 'Adam', active: true } }
]
},
{ myObjects:
[
]
},
{ myObjects:
[
{ obj: { name: 'Adam', active: true } }
]
},
{ myObjects:
[
{ obj: { name: 'Adam', active: true } } }
]
}
]
Есть один myObjects, содержащий пустой массив. Как мне исключить это из результата, поэтому я получаю только обратно
[
{ myObjects:
[
{ obj: { name: 'Adam', active: true } }
]
},
{ myObjects:
[
{ obj: { name: 'Adam', active: true } }
]
},
{ myObjects:
[
{ obj: { name: 'Adam', active: true } } }
]
}
]
result = result.filter(function(val) { return val.myObjects.length; })
- person BpH   schedule 21.04.2017