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 find
alternativa 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
_id
auser
, 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
/userList
ruta, 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 collection
despuésupdate
odelete
Podemos editar la función a algo como esto:
Esto tendrá
list all documents
éxito en lugar de soloshowing success message
fuente
Para hacer que la función espere a que se recupere la lista.
fuente
Mi solución
fuente