Intenté usar Mongoose para enviar la lista de todos los usuarios de la siguiente manera:
server.get('/usersList', function(req, res) {
var users = {};
User.find({}, function (err, user) {
users[user._id] = user;
});
res.send(users);
});
Por supuesto, res.send(users);va a enviar {}, que no es lo que quiero. ¿Existe una findalternativa con semántica ligeramente diferente, donde podría hacer lo siguiente?
server.get('/usersList', function(req, res) {
User.find({}, function (err, users) {
res.send(users);
});
});
Esencialmente, quiero que la devolución de llamada se ejecute solo cuando todos los usuarios hayan sido recuperados de la base de datos.
javascript
node.js
mongodb
mongoose
Randomblue
fuente
fuente

Respuestas:
Bueno, si realmente desea devolver un mapeo de
_idauser, siempre puede hacer:find()devuelve todos los documentos coincidentes en una matriz, por lo que su último código recortado envía esa matriz al cliente.fuente
Si desea enviar los datos a una vista, pase lo siguiente.
Dentro de su vista, puede recorrer los datos utilizando la variable usuarios
fuente
Esto es solo una mejora de la respuesta de @soulcheck, y una corrección del error tipográfico en forEach (falta el corchete de cierre);
¡salud!
fuente
/userListruta, recibirá un objeto JSON con el formato:{"123451": {...user 123451}, "123452": {...user 123452} }Había una forma muy sencilla de enumerar sus datos:
fuente
Lo mismo se puede hacer con async await y función de flecha
fuente
En caso de que queramos
list all documents in Mongoose collectiondespuésupdateodeletePodemos editar la función a algo como esto:
Esto tendrá
list all documentséxito en lugar de soloshowing success messagefuente
Para hacer que la función espere a que se recupere la lista.
fuente
Mi solución
fuente