J'ai essayé d'utiliser Mongoose pour envoyer la liste de tous les utilisateurs comme suit:
server.get('/usersList', function(req, res) {
var users = {};
User.find({}, function (err, user) {
users[user._id] = user;
});
res.send(users);
});
Bien sûr, res.send(users);
va envoyer {}
, ce qui n'est pas ce que je veux. Existe-t-il une find
alternative avec une sémantique légèrement différente, où je pourrais faire ce qui suit?
server.get('/usersList', function(req, res) {
User.find({}, function (err, users) {
res.send(users);
});
});
Essentiellement, je souhaite que le rappel ne soit exécuté que lorsque tous les utilisateurs ont été extraits de la base de données.
javascript
node.js
mongodb
mongoose
Randomblue
la source
la source
Réponses:
Eh bien, si vous voulez vraiment renvoyer un mappage de
_id
àuser
, vous pouvez toujours faire:find()
renvoie tous les documents correspondants dans un tableau, donc votre dernier code extrait envoie ce tableau au client.la source
Si vous souhaitez envoyer les données à une vue, transmettez ce qui suit.
Dans votre vue, vous pouvez parcourir les données en utilisant les utilisateurs variables
la source
Ceci est juste une amélioration de la réponse de @soulcheck, et correction de la faute de frappe dans forEach (crochet fermant manquant);
à votre santé!
la source
/userList
route, vous recevrez un objet JSON au format:{"123451": {...user 123451}, "123452": {...user 123452} }
Il y avait un moyen très simple de lister vos données:
la source
La même chose peut être faite avec l'attente asynchrone et la fonction de flèche
la source
Au cas où nous voudrions
list all documents in Mongoose collection
aprèsupdate
oudelete
Nous pouvons modifier la fonction en quelque chose comme ceci:
Ce sera
list all documents
sur le succès au lieu de justeshowing success message
la source
Pour rendre la fonction d'attendre que la liste soit récupérée.
la source
Ma solution
la source