Ошибка здесь во втором populate
запросе:
.populate({
path: 'tours_favoritos',
model: Tour,
populate: { path: 'sitios', model: Sitio },
populate: { path: 'turistas', model: Turista },
populate: { path: 'categoria', model: CategoriaTour },
populate: { path: 'empresa_turismo', model: EmpresaTurismo },
populate: {
path: 'guia', model: Guia,
populate: { path: 'idiomas', model: Idioma }
}
})
Вы передаете объект для заполнения функции, и каждый раз, когда вы используете другое заполнение внутри этого объекта, он переопределяет старый, он похож на любое определение объекта.
Например:
var a={
foo : "bar",
foo : "bar2",
foo : "bar3"
}
//the last foo overrides the first two
//a.foo = bar3
Как и в предыдущем примере, последнее заполнение переопределяет предыдущие.
Теперь вернемся к решению вашего вопроса,
Вам нужно передать массив в поле populate
, чтобы он заполнял все нужные вам поля
Попробуйте это:
.populate({
path: 'tours_favoritos',
model: Tour,
populate: [
{ path: 'sitios', model: Sitio },
{ path: 'turistas', model: Turista },
{ path: 'categoria', model: CategoriaTour },
{ path: 'empresa_turismo', model: EmpresaTurismo },
{
path: 'guia', model: Guia,
populate: { path: 'idiomas', model: Idioma }
}
]
})
замените приведенный выше код вместо вашего второго заполненного запроса, и он будет работать.