
Mongoose - Busquedas anidadas
Publicado por David (1 intervención) el 10/04/2017 15:40:57
Buenos días.
Dada las características asíncronas de NodeJs, estoy en un problema que no sé como resolver. Paso a explicar.
Tengo dos colecciones en una BD Mongo. Uso mongoose desde NodeJs.
Casa User tiene un número de grupo de usuarios asignado en el campo group_id.
Quiero obtener un listado como sigue:
ADMINISTRATORS
--------------------------
jlopez
rdiaz
OPERATORS
--------------------------
amiralles
dcamponits
Para obtener el listado hago lo siguiente:
El PROBLEMA es que obtengo lo siguiente:
ADMINISTRATORS
--------------------------
OPERATORS
--------------------------
jlopez
rdiaz
amiralles
dcamponits
¿Qué puedo hacer para lograr mi cometido? ¿cómo hago para que el primero ciclo For no continue hasta que termine el ciclo For interno?
Gracias de antemano (los datos en la BD están bien.)
Dada las características asíncronas de NodeJs, estoy en un problema que no sé como resolver. Paso a explicar.
Tengo dos colecciones en una BD Mongo. Uso mongoose desde NodeJs.
1
2
3
4
5
6
7
Colección UserGroup, con campos:
name(String)
group_id (Number)
Colección User, con campos:
user_name(String)
group_id(Number)
Casa User tiene un número de grupo de usuarios asignado en el campo group_id.
Quiero obtener un listado como sigue:
ADMINISTRATORS
--------------------------
jlopez
rdiaz
OPERATORS
--------------------------
amiralles
dcamponits
Para obtener el listado hago lo siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
UserGroup.find({}, (err, groups) => {
for(var i in groups){
console.log(groups[i].name)
console.log("--------------------")
User.find( {group_id : groups[i].group_id}, (err, users) =>{
for(var j in users){
console.log(users[j].user_name)
}
})
}
})
El PROBLEMA es que obtengo lo siguiente:
ADMINISTRATORS
--------------------------
OPERATORS
--------------------------
jlopez
rdiaz
amiralles
dcamponits
¿Qué puedo hacer para lograr mi cometido? ¿cómo hago para que el primero ciclo For no continue hasta que termine el ciclo For interno?
Gracias de antemano (los datos en la BD están bien.)
Valora esta pregunta


0