¿Cómo devolver múltiples colecciones de Mongoose en una solicitud de obtención?

Estoy tratando de generar una respuesta que devuelva la misma colección ordenada por 3 columnas diferentes. Aquí está el código que tengo actualmente:

var findRoute = router.route("/find") findRoute.get(function(req, res) { Box.find(function(err, boxes) { res.json(boxes) }).sort("-itemCount"); }); 

Como puede ver, estamos realizando una única solicitud de obtención, consultando las cajas y clasificándolas por itemCount al final. Esto no me funciona porque la solicitud solo devuelve una única colección JSON que está ordenada por itemCount .

¿Qué puedo hacer si deseo devolver dos colecciones más ordenadas por, por ejemplo, propiedades de name y size , todas en la misma solicitud?

Cree un objeto para encapsular la información y encadene sus consultas de búsqueda, como:

 var findRoute = router.route("/find"); var json = {}; findRoute.get(function(req, res) { Box.find(function(err, boxes) { json.boxes = boxes; Collection2.find(function (error, coll2) { json.coll2 = coll2; Collection3.find(function (error, coll3) { json.coll3 = coll3; res.json(json); }).sort("-size"); }).sort("-name"); }).sort("-itemCount"); }); 

Sólo asegúrese de hacer la comprobación de errores adecuada.

Esto es un poco feo y hace que su código sea difícil de leer. Intente adaptar esta lógica utilizando módulos como async o incluso promesas ( Q y bluebird son buenos ejemplos).

Si entiendo bien, quieres algo así: volver Varias colecciones con mongodb

Dime si eso ayuda.

Adiós.

Has probado ?

 Box.find().sort("-itemCount").exec(function(err, boxes) { res.json(boxes) }); 

También para clasificar sus resultados según 2 o más campos, puede usar:

.sort ({nombre: 1, tamaño: -1})

Déjame saber si eso ayuda.